c 佇列及優先佇列

2022-05-05 00:51:10 字數 2107 閱讀 5822

佇列

特點:先進先出,模擬遞迴,運用於演算法設計;

常用操作:

cpp:

queueq; //定義;

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

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

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

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

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

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

特點:按照鍵值的大小排隊,stl裡的用大小根堆來實現,

/*優先佇列的基本使用    2010/7/24    dooder*/  

#include#include#include#includeusing namespace std;

//定義結構,使用運算子過載,自定義優先順序1

struct cmp1

};

struct cmp2

};

struct number2

for(i=0;num1[i].x;i++)

que5.push(num1[i]);

for(i=0;num2[i].x;i++)

que6.push(num2[i]);

printf("採用預設優先關係:\n(priority_queueque;)\n");

printf("queue 0:\n");

while(!que.empty())

puts("");

puts("");

printf("採用結構體自定義優先順序方式一:\n(priority_queue,cmp>que;)\n");

printf("queue 1:\n");

while(!que1.empty())

puts("");

printf("queue 2:\n");

while(!que2.empty())

puts("");

puts("");

printf("採用標頭檔案\"functional\"內定義優先順序:\n(priority_queue,greater/less>que;)\n");

printf("queue 3:\n");

while(!que3.empty())

puts("");

printf("queue 4:\n");

while(!que4.empty())

puts("");

puts("");

printf("採用結構體自定義優先順序方式二:\n(priority_queueque)\n");

printf("queue 5:\n");

while(!que5.empty())

puts("");

printf("queue 6:\n");

while(!que6.empty())

puts("");

return 0;

}

常用操作:

priority_queue,cmp1> que;      //宣告,que參照上面用法;

que.empty(); //判斷是否為空

que.size(); //佇列長度;

que.push(); //插入;

que.pop(); //刪除;

que.top(); //查詢;

c 佇列及優先佇列

佇列 特點 先進先出,可形成有序的結構,運用於演算法設計 常用操作 cpp queueq 定義 q.empty 如果隊列為空返回true,否則返回false q.size 返回佇列中元素的個數 q.pop 刪除佇列首元素但不返回其值 q.front 返回隊首元素的值,但不刪除該元素 q.push 在...

C 優先佇列

半題外話 優先佇列個人認為主要優點是可以在排序後進行類似於插入排序的操作,適合於需要在陣列排序後再次進行操作的題目 再由此產生一堆bug 本蒟蒻是在敲貪心的題時遇見的 弱得連個貪心都不會敲了呵 就開始了學 mo 習 ca 之旅 優先佇列的結構 佇列1.back 返回乙個引用,指向最後乙個元素 2.e...

c 優先佇列

優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有乙個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則進行,而是將當前佇列中最大的元素出隊。這點類似於給佇列裡的元素進行了由大到小的順序排序。元素的比較規則預設按元素值由大到小排序,可以過載 操作符來重新定義...