例說資料結構&STL(五)——stack

無鞋童鞋發表於2017-07-29

1 白話棧(stack)
  棧(statck)和佇列相似,是一個帶有資料儲存特性的資料結構。棧中儲存資料與佇列相反是先進後出的(First In Last Out, FILO),我們可以對應於生活中壘椅子的經驗來理解這種資料結構的特性。棧只有一個出口,像下面一摞椅子一樣,只能在棧頂上增加元素,也只能從棧頂移出元素和訪問元素。

這裡寫圖片描述

2 STL中stack實戰
 2.1 標頭檔案
  STL中stack模板類定義在下面標頭檔案中,同時我們需要宣告標準庫的名稱空間。

#include<stack>

using namespace std;

  stack由於是單向出口,所以介面相對較少,並且它和佇列queue一樣,屬於介面卡型別容器,所以沒有定義迭代器iterator類來操作訪問stack中元素。
 2.2 變數宣告
  stack模板類構造需要兩個模版引數,一個是元素型別,一個是容器型別。元素型別是必要的,和前面介紹的一樣,可以是傳統資料型別諸如int,long,float等,或者是類,結構體諸如string等。容器型別是可選的,包括vector,list或者deque,預設就是前面介紹的deque型別。
  stack的宣告如下:

stack<int> stk_fir;

stack<string> stk_sed;

 2.3 基本操作
  我們以上面定義的stk_fir棧物件為例,介紹堆疊stack基本方法操作:

stk_fir.push(10086);   // 棧頂入棧元素10086

stk_fir.pop();         // 刪除一個棧頂元素

stk_fir.top();         // 訪問棧頂一個元素(而queue可以訪問隊首和隊尾,分別是front()和back()方法) 

stk_fir.size();        // 返回棧中元素個數

stk_fir.swap(stk_thd); // 交換兩個相同型別的stack中所有資料

stk_fir.empty();       // 棧中為空則返回true

3 小結
  棧的方法介面不是很多,這些已經足夠我們完成棧這個資料結構幾乎所有行為。棧在現實當中憑藉其FILO特性也得到了廣泛的應用,例如進位制轉換,二叉樹的中序遍歷等等。
  以上是個人學習記錄,由於能力和時間有限,如果有錯誤望讀者糾正,謝謝!
  轉載請註明出處:http://blog.csdn.net/FX677588/article/details/76351011

相關文章