C++ 程式中雙端優先佇列
本教程中,我們將使用 C++ 中的 set 建立一個雙端優先順序佇列。
讓我們看下建立雙端佇列的步驟。
建立你希望命名的結構。
使用 set 建立一個佇列變數。
size 方法,返回佇列的大小。
is_empty 方法,返回佇列是否為空。
insert 方法,將新元素插入佇列中。
get_start 方法,返回佇列左側的元素。
get_end 方法,返回佇列右側的元素。
delete_start 方法,刪除左側的第一個元素。
delete_end 方法,刪除右側的第一個元素。
示例
讓我們看下程式碼。
#include <bits/stdc++.h>
using namespace std;
struct doubleEndedQueue {
set<int> s;
int size() {
return s.size();
}
string is_empty() {
return s.size() == 0 ? "True" : "False";
}
void insert(int x) {
s.insert(x);
}
int get_start() {
return *(s.begin());
}
int get_end() {
return *(s.rbegin());
}
void delete_start() {
if (s.size() == 0) {
return;
}
s.erase(s.begin());
}
void delete_end() {
if (s.size() == 0) {
return;
}
auto end = s.end();
end--;
s.erase(end);
}
};
int main() {
doubleEndedQueue d;
cout << "is empty: " << d.is_empty() << endl;
d.insert(1);
d.insert(2);
d.insert(3);
d.insert(4);
d.insert(5);
cout << "is empty: " << d.is_empty() << endl;
cout << "end: " << d.get_end() << endl;
d.delete_end();
cout << "end: " << d.get_end() << endl;
cout << "start: " << d.get_start() << endl;
d.delete_start();
cout << "start: " << d.get_start() << endl;
return 0;
}輸出
如果你執行以上程式碼,則會得到以下結果。
is empty: True is empty: False end: 5 end: 4 start: 1 start: 2
總結
如果您對教程有任何疑問,請在評論部分中提及。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
JavaScript
PHP