C STL容器之棧stack

2021-09-16 22:14:01 字數 1247 閱讀 8294

c++stack(堆疊)是乙個容器的改編,它實現了乙個先進後出的資料結構(filo)

使用該容器時需要包含#include標頭檔案;定義stack物件的示例**如下:

stacks1;

stacks2;

1.入棧:如s.push(x);

2.出棧:如 s.pop().注意:出棧操作只是刪除棧頂的元素,並不返回該元素。

3.訪問棧頂:如s.top();

4.判斷棧空:如s.empty().當棧空時返回true。

5.訪問棧中的元素個數,如s.size();

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

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

單鏈表實現棧要比單鏈表的實現簡單點。我們通過在表的尾端插入來實現push,通過刪除尾節點來實現pop,獲取尾節點的元素來表示top。

下面我們以華為一道機試題目來簡單說明一下stack的用法

題目是要我們輸入乙個只包含英文和空格和英文的字串,然後輸出其反序

例項:輸入:i am a boy

輸出:boy a am i

例程如下:

#include#include#includeusing namespace std;

int main()

while (!ss.empty())

cout << endl;

system("pause");

return 0;

}

這個程式就基本上用到了stack的幾個主要的操作,這裡用到了乙個小技巧,首先定義了乙個元素為string型別的堆疊ss,然後利用cin的特性,其每次對於輸入的乙個字串,若遇到空格便結束,這樣便把相應的字串存到了每個元素中,然後在一次列印出棧頂元素,再彈出棧頂,再列印棧頂元素即可實現。

STL容器之stack棧

棧 statck 這種資料結構在計算機中是相當出名的。棧中的資料是先進後出的 first in last out,filo 棧只有乙個出口,允許新增元素 只能在棧頂上增加 移出元素 只能移出棧頂元素 取得棧頂元素等操作。在stl中,棧是以別的容器作為底部結構,再將介面改變,使之符合棧的特性就可以了。...

C 中STL容器之棧 stack

1.棧 stack 基本介紹 棧是限定在僅在表尾進行插入或刪除操作的線性表,表尾端稱為棧頂 top 表頭端稱為 棧底 bottom 一般的棧如下圖所示,它的特點可用圖3.1 b 所示的鐵路排程站形象地表示 2.棧的基本用法 2.1 棧的定義方式 stacks 引數也是資料型別,這是棧的定義方式 st...

c STL容器之map容器

1.map中所有的元素都是pair 2.pair元素中第乙個元素為key,第二個元素為value 3.所有元素都會根據鍵值自動排序 4.map中不允許有重複的鍵,multimap中允許有重複的鍵 優點 可以根據key快速的找到value 一 建構函式 mapmp map const map mp 二...