一、前言
之前的兩篇部落格我們根據棧和佇列後進先出、先進先出的特點對這兩種資料結構用順序表和煉表分別進行了實現,也有了一定的了解,這篇我們就來介紹一下標準庫中的棧和佇列
二、棧2.1 標準庫中的棧
標準庫中的stack是乙個class
2.2 棧的操作
public
class
main
}}
2.3 棧操作的注意事項
1.標準庫中的stack如果針對空棧pop或者peep就會丟擲空棧異常.
2.由於標準庫中的stack是繼承自vector的類,vector能執行的操作,stack也一樣可以,stack並沒有起到限制靈活性的效果,反而增加了**的複雜程度,實際使用stack盡量避免這些本不該是stack的操作,如下:
stack.
add(2,
100)
; stack.
get(0)
; stack.
contains(2
);
三、佇列
3.1 標準庫中的佇列
標準庫中的佇列是乙個介面,只能例項化乙個實現queue介面的類,標準庫中的佇列是基於鍊錶實現的
3.2 佇列的操作
public
class
main
}}
3.3 佇列操作的注意事項
1.與只提供一組操作的棧不同,佇列提供兩組操作,他們的基本操作方法命名規則也是不統一,如下圖,根據返回的方式不同標準庫為佇列設計了兩組方法,由上至下分別是:入佇列,出佇列,取隊首元素:
丟擲異常
返回特殊值
add(e)
offer(e)
remove()
poll()
element()
peek()
2…棧和佇列中,判空操作和一般的list風格也不一致:
當判斷乙個棧是否為空時,使用stack.empty()與stack.isempty()均可,只是兩個方法存在的類不同.
佇列中則沒有empty方法,判空就使用queue.isempty()即可.
至此,關於標準庫中棧和佇列的基本操作方法就介紹完畢了,棧和佇列作為我們解決問題的重要資料結構我們在下條部落格會分析一些基於棧和佇列展開的**程式設計問題.
C 標準庫之棧(stack)和佇列(queue)
在c 標準庫 stl 中,實現了棧和佇列,方便使用,並提供了若干方法。以下作簡要介紹。1 棧 stack 說明及舉例 使用棧,要先包含標頭檔案 include 定義棧,以如下形式實現 stack s 其中type為資料型別 如 int,float,char等 棧的主要操作 s.push item 將...
C 標準模板庫STL中棧 佇列用法
佇列 queue 使用之前需引入標頭檔案 stack 將乙個新元素壓入棧中。如果棧不為空,彈出棧頂元素 返回棧頂元素的引用,如果棧為空,結果未定義,返回的是乙個引用。返回棧中元素個數。判斷棧是否為空,若為空返回true,否則返回false。使用之前需引入標頭檔案 queue 將乙個新元素追加到佇列末...
C (標準庫)棧和佇列以及優先佇列的使用
使用標準庫的棧 include 標頭檔案 stacks 定義乙個 int 型的棧 s.empty 如果棧為空返回true,否則返回false s.size 返回棧中元素的個數 s.pop 刪除棧頂元素但不返回其值 s.top 返回棧頂的元素,但不刪除該元素 s.push 在棧頂壓入新元素 使用標準庫...