关于顺序队列有以下常见结论:
1. 初始化队列:qu.front==qu.rear
2. 入队:
qu.data[qu.rear++]=x;
qu.rear=(qu.rear+1)%maxsize
3. 出队:
qu.front=(qu.front+1)%maxsize
4. 判断条件:
qu.front==(qu.rear+1)%maxsize(判断栈满没满,对应入栈操作)
qu.front==qu.rear(判断栈是否为空,对应出栈操作)
结构体定义
typedef struct SqQueue{
int data[maxSize];
int front;
int rear;
}SqQueue;
队列初始化:
void initQueue(SqQueue &qu){
qu.front=qu.rear=0;
}
判空操作:
int isEmpty(SqQueue qu){
if(qu.front==qu.rear)
return 1;
else
return 0;
}
入队操作:
int enQuene(SqQueue &qu,int x){
if((qu.rear+1)%maxSize==qu.front){
return 0;
}
qu.data[qu.rear]=x;
qu.rear=(qu.rear+1)%maxSize;
return 0;
}
出队操作:
int deQuene(SqQueue &qu){
if(qu.rear==qu.front){
return 0;
}
else{
qu.front=(qu.front+1)%maxSize;
return 1;
}
}
打印队列:
int print(SqQueue qu){
while(qu.front!=qu.rear){
printf("%d",qu.data[qu.front++]);
}
return 0;
}