stack堆疊容器

2021-07-04 17:05:51 字數 1159 閱讀 5979

堆疊是一種線性表,插入和刪除操作只在表的一端進行,該端成為棧頂,另一端則稱為棧底。元素的入棧和出棧都是在棧頂進行的,因此堆疊是一種後進先出表(lifo)。

c++ stl

的堆疊泛化是通過現有的序列容器來實現的,預設使用的是雙端佇列

deque

的資料結構。在

stl中,

stack

的元素出棧操作是不返回棧頂元素的,獲得棧頂元素需要呼叫相應的取棧頂函式才能獲得,這種分離的實現,是考慮到出棧函式若是直接返回棧頂元素,將會導致返回值的資料引用安全問題或者不必要的低效複製函式的呼叫。

主要有以下兩種方式。

(1)stack()

stacks;

(2)stack(const stack&)

複製建構函式。

stack> s1;

stack> s2(s1);

入棧函式為push函式,c++的stl是不預設堆疊的大小的,入棧函式不考慮堆疊空間是否為滿,均將元素壓入堆疊。

stacks;

s.push(1);

s.push(2);

s.push(3);

出棧函式為pop函式,該函式並沒有判斷堆疊是否為空,需要自行判斷堆疊是否為空,才可以執行pop函式。

stacks;

while(!s.empty())

堆疊stack容器的棧頂元素的讀取函式為top函式,取棧頂元素也要判斷堆疊是否為空,取出的棧頂元素才有意義。

cout<

s.pop();

棧頂判斷是否為空利用函式empty。

#include#includeusing namespace std;

int main()

{ stacks;

s.push(1);

s.push(2);

s.push(3);

s.push(4);

s.push(5);

while(!s.empty())

{ cout<

堆疊元素的個數可以用size函式來獲得。

#include#include#include#define stack_size 100

using namespace std;

int main()

{ stack> s;

if(s.size()

stack堆疊容器

stack堆疊容器 堆疊是乙個線性表,插入和刪除只在表的一端進行。這一端稱為棧頂 stack top 另一端則為棧底 stack bottom 堆疊的元素插入稱為入棧,元素的刪除稱為出棧。由於元素的入棧和出棧總在棧頂進行,因此,堆疊是乙個後進先出 last in first out 表,即 lifo...

stack堆疊容器

stack堆疊是乙個後進先出 last in first out,lifo 的線性表,插入和刪除元素都只能在表的一端進行。插入元素的一段稱為棧頂 stack top 而另一端則稱為棧底 stack bottom 插入元素叫入棧 push 元素的刪除稱為出棧 pop 下面是棧的示意圖 要使用stack...

stack堆疊容器 轉)

堆疊是乙個線性表,插入和刪除只在表的一端進行。這一端稱為棧頂 stack top 另一端則為棧底 stack bottom 堆疊的元素插入稱為入棧,元素的刪除稱為出棧。由於元素的入棧和出棧總在棧頂進行,因此,堆疊是乙個後進先出 last in first out 表,即 lifo 表。c stl 的...