c 中的 棧 stack 用法

2021-09-01 11:23:31 字數 1061 閱讀 2475

c++ stack(堆疊) 是乙個容器類的改編,為程式設計師提供了堆疊的全部功能,——也就是說實現了乙個先進後出(filo)的資料結構。

c++ stl棧stack的標頭檔案為

#include

c++ stl棧stack的成員函式介紹

操作 比較和分配堆疊

empty() 堆疊為空則返回真

pop() 移除棧頂元素

push() 在棧頂增加元素

size() 返回棧中元素數目

top() 返回棧頂元素

棧(stack)是限制插入和刪除只能在乙個位置上進行的線性表,該位置在表的末端,叫做棧頂。新增元素只能在尾節點後新增,刪除元素只能刪除尾節點,檢視節點也只能檢視尾節點。新增、刪除、檢視依次為入棧(push)、出棧(pop)、棧頂節點(top)。形象的說,棧是乙個先進後出(lifo)表,先進去的節點要等到後邊進去的節點出來才能出來。

如圖1,是乙個棧的形象圖,top指標指向的是棧頂節點,所以我們可以通過top訪問到2節點,但是0和1節點由於先於2進入這個表,所以是不可見的。如果把0節點當做頭節點,2節點當做尾節點,那麼棧限制了訪問許可權,只可以訪問尾節點。

如圖2,當新增乙個節點3的時候,只能在棧頂節點,也就是尾節點後新增,這樣3節點變成了棧頂,2節點變成了不可見節點,訪問的時候只能訪問到3節點。入棧時限制了插入位址,只能在棧頂新增節點。

當我們執行出棧的命令時,圖2的棧頂元素是3節點,刪除的時候只能允許刪除棧頂的元素,這樣子3節點被刪除,top指向刪除後的棧頂2節點,如圖3所示。

棧有兩種是實現結構,一種是順序儲存結構,也就是利用陣列實現,一種是鏈式儲存結構,可以用單鏈表實現。陣列實現棧很簡單,用乙個下標標記top來表示棧頂,top==-1時,棧空,top==0時,表示棧裡只有乙個元素,通過訪問top為下標的陣列元素即可。出棧top自減,入棧top自加就ok了。

單鏈表實現棧要比單鏈表的實現簡單點。我們通過在表的尾端插入來實現push,通過刪除尾節點來實現pop,獲取尾節點的元素來表示top。我修改了鍊錶那一章的單鏈表**,把頭節點當做棧頂節點,實現了乙個簡單的棧模板,僅供學習所用。**會不定時更新。

STL中stack(棧)的用法

stack 模板類的定義在標頭檔案中。stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要 的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stacks1 stacks2 stack 的基本操作有 入棧,如例 s.push x ...

C 基礎 6 棧Stack的用法

一.基本用法 1.建立乙個棧物件 stacks 2.複製構造乙個棧 stacks1 stacks2 s1 3.元素入棧 stacks s.push 0 4.元素出棧 記住乙個口訣,後進先出 stacks s.push 1 s.push 2 s.pop 5.判空 stacks s.push 1 s.e...

stack棧的常見用法詳解

1.stack的定義。stack是一種先進後出的容器,要使用stack,應該先新增標頭檔案 include,並在標頭檔案限免加上using namespace std 其定義的寫法和其他stl容器一樣,typename可以是任何基本資料型別或容器 stack typename name 2.stac...