棧stack 和 佇列queue

2021-08-21 19:36:57 字數 1555 閱讀 4924

stl中,sort的預設排序為less,也就是說從小到大排序;priority_queue預設是less,也就說大頂堆;map預設是less,也就說用迭代器迭代的時候預設是小的排在前面;set預設是less,也就是說用迭代器迭代的時候是從小到大排序的。

棧和佇列的區別是啥? 吃多了拉就是佇列,吃多了吐就是棧

棧(stack)又名堆疊,它是一種運算受限的線性表。其限

制是僅允許在表的一端進行插入和刪除運算。這一端被稱為

棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又

稱作進棧、入棧或壓棧,它是把新元素放到棧頂元素的上

面,使之成為新的棧頂元素;從乙個棧刪除元素又稱作出棧

或退棧,它是把棧頂元素刪除掉,使其相鄰的元素成為新的

棧頂元素。

sta.push();

que.push();

que.pop();

sta.pop();

sta.top();

que.front();

que.empty(); 若佇列裡空了返回1

sta.empty();  若棧裡空了返回1

棧和佇列的清空

while(!que.empty()) que.pop(); 

while(!sta.empty()) sta.pop();

我們知道了佇列是先進先出,那麼優先佇列則不一樣了,進

的順序不能決定出的順序,優先佇列出的順序是按照自己設

置的優先等級來出佇列的,如果自己不設定優先順序的話,默

認優先順序為越大優先順序越高。

sort預設為從小到大排序,優先佇列預設為從大到小。

優先佇列**

priority_queue que;

que.push();

que.pop();

que.top(); 注意是top

que.empty();

優先順序的設定

int 型

priority_queue ,greater >que;   最後》 >之間要有空格 ,greater是小的做top

priority_queue ,less>que;  less是大的做top

//棧sta.top()

//佇列que.front()

//優先佇列q.top()

#include#include#include#includeusing namespace std;

stacksta;

queueque;

priority_queue,greater> q;//最後兩個》 >之間要有空格

int main()

else}}

else

else}}

} if(flag==1)

if(q.size()>k)

q.pop();

if(a=='q')

printf("%d\n",q.top());

} while(!q.empty()) //迴圈後別忘清空

q.pop();

} return 0;

}

棧(Stack)和佇列(Queue)

棧和佇列是兩種重要的線性結構。從資料結構角度看,棧和佇列也是線性表,其特殊性在於棧和佇列的基本操作是線性表操作的子集,它們是操作受限的線性表,因 此,可稱為限定性的資料結構。但從資料型別角度看,它們是和線性表大不相同的兩類重要的抽象資料型別。由於它們廣泛應用在各種軟體系統中,因此在物件導向 的程式設...

棧(stack)和佇列(queue)

棧的定義 特點 filo 是一種只能在一端進行插入或刪除操作的線性表。其中允許進行插入或刪除操作的一端稱為棧頂 top 棧頂由乙個稱為棧頂指標的位置指示器 對於順序棧,就是記錄棧頂元素所在陣列位置標號的乙個整型變數 對於鏈式棧,就是記錄棧頂元素所在結點位址的指標 來指示,它是動態變化的。表的另一端稱...

棧Stack和佇列Queue

1.stack和queue stack是先進後出的,queue是先進先出的。使用方法如下 public class dog public dog string name public void consolename 棧 先進後出 stacks new stack s.push new dog a ...