3. 棧
stl容器是c++中封裝好的可以直接供使用者使用的資料結構,它和陣列有些類似,事實上很多stl也完全可以由陣列模擬實現,但顯然沒有直接呼叫已經封裝好的stl容器方便。除此之外,還有乙個最大的特點是,stl容器是一種動態的容器,它的記憶體空間的分配是動態分配的,而不像陣列,在宣告的一開始就需要指明陣列的容量大小。
佇列,顧名思義,就是一種模擬隊伍或排隊的資料結構,它的特點是先進先出,就是說每次從佇列容器中取出的元素都是當前隊伍的隊首元素,每次插入到佇列中的元素都是插到隊尾,這就很像食堂吃飯時排隊一樣,後來的人不能插隊,得到隊伍末尾,每次食堂阿姨盛飯都是給隊首的同學盛飯,然後隊首的同學離開隊伍。
出隊<— x1
<— x2
<— x3
<— …
<— xn-1
<— xn
<—入隊
隊首元素隊尾元素
#include
queue q;
//宣告乙個元素型別為t的佇列
其中,尖括號裡的t表示佇列中每乙個元素的型別,可以是int、double、float、char等基本變數型別,也可以是使用者自定義的struct結構體型別。
如定義乙個以int為元素型別的佇列q:
queue<
int> q;
方法
返回型別
含義q.front()
t返回佇列的隊首元素
q.back()
t返回佇列的隊尾元素
q.pop()
void
隊首元素出隊,即刪除最先進來的元素
q.empty()
bool
返回佇列是否為空,true表示隊列為空,false表示隊列為非空
q.size()
int返回佇列的長度,即佇列中元素的個數
其中,t表示佇列中的元素型別。
#include
#include
using namespace std;
intmain()
#include
和佇列類似
stack s;
//宣告乙個元素型別為t的棧
其中,尖括號裡的t表示佇列中每乙個元素的型別,可以是int、double、float、char等基本變數型別,也可以是使用者自定義的struct結構體型別。
如定義乙個以int為元素型別的棧s:
stack<
int> s;
方法
返回型別
含義s.top()
t返回棧頂元素
s.pop()
void
棧頂元素出棧,即刪除最後進來的元素
s.empty()
bool
返回棧是否為空,true表示棧為空,false表示棧為非空
s.size()
int返回棧的大小,即棧中元素的個數
其中,t表示佇列中的元素型別。
#include
#include
using namespace std;
intmain()
STL 棧與佇列
在大多數情況下可以不需要自己寫相應函式,直接呼叫stl中棧與佇列的相關函式,簡潔方便。以下是stl中棧與佇列的標頭檔案,定義方式以及常用函式 標頭檔案 include 佇列 include 棧定義方式 stacks 棧的定義方式 queueq 佇列的定義方式棧的基本操作 s.empty 如果棧為空返...
資料結構第二講筆記之棧 佇列(2)
資料結構 record two stack queue 堆疊 棧是乙個先進後出的線性表,它僅允許在表的一端進行插入和刪除操作 運算受限的線性表 下面首先來看一看順序儲存實現的堆疊 堆疊的順序儲存實現 本測試所用資料型別為int型 include include define error 1 type...
STL容器之優先佇列
優先順序佇列,以前刷題的時候用的比較熟,現在竟然我只能記得它的關鍵字是priority queue 太傷了 在一些定義了權重的地方這個資料結構是很有用的。先回顧佇列的定義 佇列 queue 維護了一組物件,進入佇列的物件被放置在尾部,下乙個被取出的元素則取自佇列的首部。priority queue特...