队列 (Queue)
First in first out
Operations
1) EnQueue(x)
2) DeQueue()
3) Front()
4) IsEmpty()
时间复杂度都是 O(1)
用数组实现队列
#include<stdio.h>
#define MAX 10
int front=-1;
int rear=-1;
int A[MAX];
int IsEmpty(){
if(front==-1 && rear==-1){
return 1;
}else{
return 0;
}
}
int IsFull(){
if((rear+1)%MAX == front){
return 1;
}else{
return 0;
}
}
void EnQueue(int x){
if(IsFull()){
return;
}else if(IsEmpty()){
front=0;
rear=0;
A[rear]=x;
}else{
rear = (rear+1)%MAX;
A[rear]=x;
}
}
void DeQueue(){
int x;
if(IsEmpty()){
return;
}else if(front==rear){
x=A[rear];
front=-1;
rear=-1;
printf("%d\n",x);
}else{
x=A[front];
front=(front+1)%MAX;
printf("%d\n",x);
}
}
int main(){
EnQueue(2);
EnQueue(5);
EnQueue(9);
EnQueue(7);
DeQueue();
DeQueue();
return 0;
}
用链表实现队列
待编辑