C STL佇列和棧講解加運用實列

2021-10-09 14:22:23 字數 1628 閱讀 6243

#include

//標頭檔案

queue<

int> q;

//定義佇列

q.front()

;//返回隊頭元素,但不刪除

q.pop()

;//刪除隊頭元素 但不返回值

q.empty()

;//判斷佇列是否為空,為空返回true

q.size()

;//返回佇列中元素個數

q.push

(x);

//向佇列加入新元素(入隊),x為值

q.back()

;//返回隊尾元素的值,但不刪除

#include

//標頭檔案

stack<

int> s;

//定義棧

s.top()

;//返回棧頂元素,但不刪除

s.pop()

;//刪除棧頂元素,但不返回

s.size()

;//返回棧內元素個數

s.push

(x);

//向棧內入棧新元素(入棧),值為x

s.empty()

;//判斷棧是否為空,為空返回true

紙牌遊戲:小貓釣魚

倆玩家分別持有一定數量紙牌

玩家1先出牌放到桌面,玩家2再出牌

如果玩家出的牌在桌面上已有,則該玩家可以獲得倆張牌中間所有的牌

倆玩家的牌庫可以看做是佇列,先進先出

桌面可看做棧,先進後出

queue<

char

> a;

//玩家1

queue<

char

> b;

//玩家2

stack<

char

> m;

//桌面

bool book[15]

;//標記陣列

//將字串中每個元素轉換為相應int值,便於book陣列標記

intz

(char x)

//玩家1贏牌

voidd1(

int t,

char s)

return;}

//玩家2贏牌

voidd2(

int t,

char s)

return;}

intmain()

for(

int i=

0;ilength()

;i++

)for

(int i=

0;ilength()

;i++

)while

(!a.

empty()

&&!b.

empty()

)//當倆玩家牌庫均不為空,玩家1先出牌

else

t=z(b.

front()

);if(book[t]

)else}if

(a.empty()

)else

if(b.

empty()

) cout<<

"前者獲勝!"

}

C STL 棧和佇列

結論 後進先出 last in first out 簡稱為lifo線性表。舉個例子 你在洗碗把洗好的碗編號為1 2 n依次摞起來,1號在最下面,向上編號依次增加,然後再從上到下把碗放好,這樣的話,先被洗的碗,就後被放好。2.佇列 佇列 queue 也是一種運算受限的線性表,它的運算限制與棧不同,是兩...

C STL 棧和佇列詳解

一.解釋 1.棧 結論 後進先出 last in first out 簡稱為lifo線性表。舉個例子 你在洗碗把洗好的碗編號為1 2 n依次摞起來,1號在最下面,向上編號依次增加,然後再從上到下把碗放好,這樣的話,先被洗的碗,就後被放好。2.佇列 佇列 queue 也是一種運算受限的線性表,它的運算...

C STL 棧和佇列詳解

一.解釋 1.棧 結論 後進先出 last in first out 簡稱為lifo線性表。舉個例子 你在洗碗把洗好的碗編號為1 2 n依次摞起來,1號在最下面,向上編號依次增加,然後再從上到下把碗放好,這樣的話,先被洗的碗,就後被放好。2.佇列 佇列 queue 也是一種運算受限的線性表,它的運算...