常量時間的棧操作(min max)

2021-06-17 20:29:39 字數 530 閱讀 7211

push,pop,top,size,empty這些操作對於棧來說常量時間的,但是要想實現min,max的常量時間操作需要增加兩個棧,乙個用於維護最小值,乙個用於維護最大值。例如,對於min,每次入棧時將小於等於min棧頂的數值也壓到min棧,出棧是如果值等於min的棧頂,將min的棧頂出棧。

以下是實現的**,並不複雜。

#include #include using namespace std;

templateclass xstack

else

stk.push(v);

} void pop()

type top()

size_t size()

bool empty()

type min()

type max()

private:

stackstk;

stackmin_stk;

stackmax_stk;

};int main()

棧(一) 棧的基本操作

1.棧的簡介 棧是一種後入先出的資料結構,一般包含兩種最基本的操作 入棧 push 和出棧 pop 入棧操作 top指標上移,元素入棧。出棧操作 top指標下移。棧空的條件 top bottom 棧滿的條件 top maxsize 1 2.有資料序列1 2 3一次存入乙個棧stack中,則出棧順序可...

棧 順序棧的基本操作

棧也是一種線性表,但是棧是一種操作受限的線性表,因此也可稱它為限定性的資料機構。棧是限定僅在表尾進行插入或刪除操作的線性表。棧的表尾為它的棧頂,表頭為它的棧底。先進入棧的後出棧,後進入棧的先出棧。所以,棧被稱為後進先出的線性表。順序棧基本操作的實現 include include define in...

棧 順序棧的基本操作

棧 作為一種限定性線性表,是將線性表的插入和刪除操作限制為僅在表的一端進行,通常將表中允許插入 刪除操作的一端稱為棧頂。下面給出順序棧的 演示。順序棧 採用順序儲存結構實現的棧,即利用一組位址連續的儲存單元依次存放自棧底的資料元素,同時由於棧操作的特殊性,還必須附設乙個位置指標top來動態的指示 棧...