c STL棧與佇列(stack queue)

2021-09-29 11:52:32 字數 2723 閱讀 9185

includ

stacka 定義型別為xx的棧a

a.push()壓棧

a.pop()出棧

a.top()返回棧頂元素

a.size()返回棧內元素個數

a.empty()判斷棧內是否為空

include

queuea定義型別為xx的佇列a

a.push()入隊

a.pop()出隊

a.front()返回隊頭元素

a.back()返回隊尾元素

a.size()返回佇列內元素個數

a.empty()判斷隊內是否為空

優先佇列相較普通佇列來說只是出隊順序不同
include

queuea定義型別為xx的佇列a

a.push()入隊

a.pop()出隊

a.top()返回隊頭元素

a.size()返回佇列內元素個數

a.empty()判斷隊內是否為空

如果,佇列型別為簡單型別

如:int double

可以採用**預設(先大後小)**方式輸出

priority_queue ,less>a

這是預設的排序方式的定義方法

也可簡化為----->priority_queue a

如:priority_queue ,lessa

priority_queue a

也可以採用自定義方式輸出

priority_queue ,greater>a;

通過這種方式定義xx的簡單型別優先佇列會**非預設 (先小後大)**方式輸出

如:priority_queue ,greater>a;

如果有需要 ,佇列型別為結構體

如下:自定義出隊方式

#include

#include

using

namespace std;

struct ew

;bool

operator

<

(ew a, ew b)

//這裡的小於號對應--->優先佇列定義中less,less則過載<

priority_queue

, less> qu;

ew e_w[8]

;int

main()

;e_w[1]

=;e_w[2]

=;e_w[3]

=;e_w[4]

=;e_w[5]

=;cout <<

"入隊前:"

;for

(int i =

0; i <

6; i++

) cout << endl;

cout <<

"入隊後:"

;while

(!qu.

empty()

)system

("pause");

return0;

}

看結果

入隊前: (1,3) (2,5) (0,4) (7,6) (3,8) (6,2)

出隊順序:(6,2) (1,3) (0,4) (2,5) (7,6) (3,8)

另一種定義方式

#include

#include

using

namespace std;

struct ew

;bool

operator

>

(ew a, ew b)

//這裡的小於號對應--->優先佇列定義中greater,greater則過載》

priority_queue

, greater> qu;

ew e_w[8]

;int

main()

; e_w[1]

=; e_w[2]

=;e_w[3]

=; e_w[4]

=; e_w[5]

=;cout <<

"入隊前:"

;for

(int i =

0; i <

6; i++

) cout << endl;

cout <<

"入隊後:"

;while

(!qu.

empty()

)system

("pause");

return0;

}

看結果

入隊前:(1,3) (2,5) (0,4) (7,6) (3,8) (6,2)

出隊順序:(0,4) (1,3) (2,5) (3,8) (6,2) (7,6)

綜上兩種結構體優先佇列出隊方式比較

可以看出

對於結構體型別佇列來說less與greater用哪個都可以實現由大到小和由小到大兩種出隊方式

需要注意的是

less要過載<

greater要過載》

c stl之佇列 棧 與優先佇列

棧 棧是先入後出,後入先出 有push 和pop 兩種操作 使用時定義是stacks top 操作是取棧頂的元素 但是不去刪除 在集合計算機的問題中的一段code 解釋 if idcache.cout x return idcache x 是如若找到集合x就返回他的id 佇列 佇列是 先如先出的 就...

C STL 棧 佇列 優先佇列

棧 後進先出 last in first out lifo 標頭檔案 stack stack stack int s 棧的基本操作 s.empty 如果棧為空返回true,否則返回false s.size 返回棧中元素的個數 s.pop 刪除棧頂元素但不返回其值 s.top 返回棧頂的元素,但不刪除...

C STl佇列 棧應用

c stl stack queue 堆疊 佇列 用函式實現了乙個 filo fifo 的資料結構。也就是說我們可以用函式直接代替佇列和棧的的操作,省時省力省腦省空間。c 棧stack的成員函式介紹 操作比較和分配堆疊 empty 堆疊為空則返回真 pop 移除棧頂元素 push 在棧頂增加元素 si...