顺序队列

队尾:入队操作

队首:出队操作

队空:front=rear

队满:Full = (rear-front)

循环队列

空出来一个位置,为了更好地判断队空/队满

空队列:front=near

满队列:(rear + 1)%Full == front%Full

C++ STL库中的队列

  1. 包含头文件queue
1
2
#include <queue>
using namespace std;//必须

不要像我一样憨憨地拼错

  1. queue q;

创建一个空的int类型队列q;

  1. q.empty();

判断队列是否为空,为空返回true,否则返回false;

  1. q.size();

返回队列q中元素的个数,即队列长度;

  1. q.front();

获取队首元素的值;

  1. q.back();

获取队尾元素的值;

  1. q.push(x);

在队尾插入元素x;

  1. q.pop();

队首元素出队。(没有返回值)

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <queue>
using namespace std;

int main(){
queue<int> Queue1;

for(int i = 1;i <= 10; i++)Queue1.push(i);

cout<<"队首元素"<<
Queue1.front()<<
endl<<"队尾元素"<<
Queue1.back()<<
endl;

int total = 0;
for(int i = 10;i >= 1; i-- ){
total+=Queue1.front();
Queue1.pop();
}
cout<<"总和:"<<total<<endl;

return 0;
}

C++ STL库中的双端队列

  1. 包含头文件deque
1
2
#include <deque>
using namespace std;//必须
  1. deque dq;

创建一个空的int型双端队列dq;

  1. dq.empty();

判断队列是否为空,返回同quere.empty()

  1. dq.size();

返回dq队列中元素的个数;

  1. dq.max_size();

返回双端队列能容纳的最大元素个数;

  1. dq.front();

返回队首元素的值;

  1. dq.back();

返回队尾元素的值;

  1. dq.push_front(a);

在队首插入元素a;

  1. dq.push_back(b);

在队尾插入元素b;

  1. dq.pop_front();

删除队首元素,没有返回值;

  1. dq.pop_back()

删除队尾元素,没有返回值。

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <deque>
using namespace std;
int main(){
deque<int> doublefun;//双倍快乐
int total = 0;
for(int i = 0;i <= 5;i++){
doublefun.push_front(i);
}
for(int i = 10; i >= 5; i--){
doublefun.push_back(i);
}
cout<<"双端队列能容纳的最大元素:"<<doublefun.max_size()<<endl;
for(int i = 0;i <= 10;i++){
total += doublefun.front();
cout<<"出队:"<<doublefun.front()<<endl;
doublefun.pop_front();
}

cout<<"总和:"<<total<<endl;

return 0;
}