棧和佇列總結

2021-08-07 11:15:14 字數 3127 閱讀 1722

/*使用標準庫的棧*/    

#include //標頭檔案

stacks; //定義乙個 int 型的棧

s.empty() //如果棧為空返回true,否則返回false

s.size() //返回棧中元素的個數

s.pop() //刪除棧頂元素但不返回其值

s.top() //返回棧頂的元素,但不刪除該元素

s.push() //在棧頂壓入新元素

/*使用標準庫的佇列*/

#include //標頭檔案

queueq; //定義乙個 int 型的佇列

q.empty() //如果隊列為空返回true,否則返回false

q.size() //返回佇列中元素的個數

q.pop() //刪除佇列首元素但不返回其值

q.front() //返回隊首元素的值,但不刪除該元素

q.push() //在隊尾壓入新元素

q.back() //返回佇列尾元素的值,但不刪除該元素

/*優先佇列

在標頭檔案中,還定義了乙個非常有用的模版類priority_queue(優先佇列),

優先佇列與佇列的差別在於優先佇列不是按照入隊的順序出隊,而是按照佇列中元素的優先權順序出隊

(預設為大者優先,也可以通過指定運算元來指定自己的優先順序)預設是乙個大根堆。

priority_queue模版類有三個模版引數,元素型別,容器型別,比較運算元。

其中後兩個都可以省略,預設容器為vector,預設運算元為less,即小的往前排,大的往後排(出隊時序列尾的元素出隊)。*/

/*如果是基本資料型別,或已定義了比較運算子的類,可以直接用stl的less運算元和greater運算元——預設為使用less運算元,

即小的往前排,大的先出隊。如果要定義自己的比較運算元,方法有多種,這裡介紹其中的一種:過載比較運算子。

優先佇列試圖將兩個元素x和y代入比較運算子(對less運算元,呼叫xy),

若結果為真,則x排在y前面,y將先於x出隊,反之,則將y排在x前面,x將先出隊。

*/priority_queueq;

priority_queue>q2;

priority_queue,greater>q3;

/*優先順序佇列支援的操作*/

q.empty() //如果隊列為空,則返回true,否則返回false

q.size() //返回佇列中元素的個數

q.pop() //刪除隊首元素,但不返回其值

q.top() //返回具有最高優先順序的元素值,但不刪除該元素

q.push(item) //在基於優先順序的適當位置插入新元素

/*deque(雙向佇列)*/

#include; //標頭檔案

dequec //建立乙個空的deque

dequec1(c2) //複製乙個deque。

dequec(n) //建立乙個deque,含有n個資料,資料均已預設構造產生。

dequec(n, elem) //建立乙個含有n個elem拷貝的deque。

dequec(beg,end) //建立乙個以[beg;end)區間的deque。

c.begin() //返回指向第乙個元素的迭代器

c.end() //返回指向最後乙個元素下乙個位置的迭代器

c.rbegin() //返回指向反向佇列的第乙個元素的迭代器(即原佇列的最後乙個元素)

c.rend() //返回指向反向佇列的最後乙個元素的下乙個位置(即原佇列的第乙個元素的前乙個位置)

c.at(pos) //返回索引為pos的位置的元素,會執行邊界檢查,如果越界丟擲out_of_range異常

c.operator //下標運算子過載

c.front() //返回c容器的第乙個元素

c.back() //返回c容器的最後乙個元素

c.size() //返回c容器中實際擁有的元素個數

c.max_size() //返回c容器可能存放元素的最大數量

c.clear() //清除c容器中擁有的所有元素

c.empty() //返回真如果雙向隊列為空

c.insert(pos,num) //在pos位置插入元素num

c.insert(pos,n,num) //在pos位置插入n個元素num

c.insert(pos,beg,end) //在pos位置插入區間為[beg,end)的元素

c.erase(pos) //刪除pos位置的元素c.erase(beg,end)刪除區間為[beg,end)的元素

c.erase(beg,end) //刪除區間為[beg,end)之間的元素

c.push_back(num) //在末尾位置插入元素

c.pop_back() //刪除末尾位置的元素

c.push_front(num) //在開頭位置插入元素

c.pop_front() //刪除開頭位置的元素

c.resize(num) //從新定義容器的大小

c.assign(n,num) //將n個num拷貝複製到容器c

c.assign(beg,end) //將[beg,end)區間的資料拷貝複製到容器c

棧和佇列總結

棧佇列 特點後進先出 先進先出 定義stackstack new stack queuequeue new linkedlist 入s.push q.offer 出s.pop 同時返回棧頂元素 q.poll 同時返回隊頭元素 頂s.peek q.peek 佇列頭部元素 注意 在佇列中 add 和re...

棧和佇列總結

棧繼承自vector,stack只有乙個空參構造方法,因此想往其中新增元素只能使用方法push 常用方法如下 public e push e item 入棧 public e pop 出棧 public e peek 檢視棧頂元素 public boolean empty 是否為空 注意在使用棧時,...

棧和佇列總結

佇列 只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出fifo first in first out 入佇列 進行插入操作的一端稱為隊尾 tail rear 出佇列 進行刪除操作的一端稱為隊頭。棧 一種特殊的線性表,其只允許在固定的一端進行插入和刪除元素操作。進行...