双端队列 Double_ended Queue
用循环队列实现双端队列,具有栈和队列的性质。
双端队列:两端都可以进队和出队的队列。
进队
:前端进的元素排在后端进的元素前面。同一端,先进的元素更靠近双端队列中间。
出队
:无论前端出还是后端出,先出队的元素排在前面。1)从后端进前端出或者从前端进后端出体现了
先进先出
的特点。
2)从后端进后端出或者从前端进前端出体现了后进先出
的特点。
code:
typedef Deque{
ElemType array[MaxSize];
int front;
int rear;
};
// 初始化
void init(){
front=back=size=0;
}
// 头进
void push_front(ElemTyle elem){
front=(front-1+MaxSize)%MaxSize;
array[front]=elem;
}
// 头出
void pop_front(){
elem=array[front];
front=(front+1)%MaxSize;
}
// 尾进
void push_back(ElemType elem){
array[back]=elem;
back=(back+1)%MaxSize;
}
// 尾出
void pop_back(){
back=(back-1+MaxSize)%MaxSize;
elem=array[back];
}
// 遍历
void traverse(){
while(front!=back){
cout<<array[front]<<endl;
front=(front+1)%MaxSize;
}
}