大家好今天我们一起来学C++ Queue的认识与编写(我才不会告诉你我昨天也是数据结构)
Queue的认识
queue指的是队列,它是FIFO(First In First Out),也是一种容器。
Queue的应用
什么是队列呢?如下:
(此时字符串里面是12345)
如图2,1进队列
1
(此时字符串里面是2345)
如图3,2、3、4、5进队列
1 | 2 | 3 | 4 | 5 |
(此时字符串里面是NONE)
如图4,1出队列
2 | 3 | 4 | 5
(此时字符串里面是1)
如图5,全部出队列
(此时字符串里面是12345 = 12345)
所以,Queue可以用来做与顺序或遍历相关的操作
3.Queue的编写
3.1 STL.queue
库:#include <queue>
声明方式:queue <typename,[(deque),(list)]> name;
常用函数:name.push(int i)进队列
name.pop()出队列
name.empty()判断是否为空
name.front()取出队列头部
name.back()取出队列尾部
name.size()
queue = queue <typename,[(deque),(list)]>();
(基本与栈差不多)
3.2 自己编写Queue
首先,我们得学会写类(class),
因为一个Queue它的函数也很多,
也不可能一个一个的写。
3.2.1 Queue准备
int a[1000]; /*也是要什么写什么*/
int rear = 0;
int front = 0;
3.2.1 push
void push(int n){
if(rear == 1000)//队列满
return;
a[rear++] = n;
}
3.2.2 pop
void pop(){
if(rear == front){
return;
}
front++;
}
3.2.3 Queue.empty
bool empty(){
return rear == front;
}
3.2.4 Queue.size
int size(){
return rear - front;
}
3.2.5 Queue.front
int front(){
if(rear == front) return -1;
return a[front];
}
3.2.6 Queue.back
int back(){
if(rear == front) return -1;
return a[rear - 1];
}
3.2.7 Queue.clear
void clear(){
rear = front = 0;
}
3.2.8 class Queue
class Queue{
public:
void push(int n){
if(rear == 1000)
return;
a[rear++] = n;
}
void pop(int n = 0){
if(rear == front){
return;
}
front++;
}
bool empty(bool a){
return rear == front;
}
int size(){
return rear - front;
}
int front(){
if(rear == front) return -1;
return a[front];
}
int back(){
if(rear == front) return -1;
return a[rear - 1];
}
void clear(){
rear = front = 0;
}
private:
int a[1000];
int rear = 0;
int front = 0;
};