#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int front,rear,tag;
}SqQueue;
void InitQueue(SqQueue &Q){
Q.front = Q.tag = 0;
Q.rear = MaxSize - 1;
}
bool QueueEmpty(SqQueue Q){
if((Q.rear + 1) % MaxSize == Q.front && 0 == Q.tag){
return true;
}else{
return false;
}
}
bool EnQueue(SqQueue &Q,int e){
if((Q.rear + 1) % MaxSize == Q.front && 1 == Q.tag){
return false;
}
Q.rear = (Q.rear + 1) % MaxSize;
Q.data[Q.rear] = e;
Q.tag = 1;
return true;
}
bool DeQueue(SqQueue &Q,int &e){
if(QueueEmpty(Q)){
return false;
}
e = Q.data[Q.front];
Q.front = (Q.front + 1) % MaxSize;
Q.tag = 0;
return true;
}
bool GetHead(SqQueue Q,int &e){
if(QueueEmpty(Q)){
return false;
}
e = Q.data[Q.front];
return true;
}
void PrintStack(SqQueue Q){
int i = Q.front;
if((Q.rear + 1) % MaxSize == Q.front && 1 == Q.tag){
printf("\t%d",Q.data[i]);
i = (i + 1) % MaxSize;
}
while((Q.rear + 1) % MaxSize != i){
printf("\t%d",Q.data[i]);
i = (i + 1) % MaxSize;
}
printf("\n");
}
int main(){
SqQueue Q;
InitQueue(Q);
for(int i = 0; i < 10; i++){
EnQueue(Q,i);
}
PrintStack(Q);//0123456789
int x;
if(DeQueue(Q,x)){
printf("\t%d",x);//0
}
printf("\n");
EnQueue(Q,1);
if((Q.rear + 1) % MaxSize == Q.front && 1 == Q.tag){
int e;
if(DeQueue(Q,e)){
printf("\t%d",e);//1
}
}
while(!QueueEmpty(Q)){
int e;
if(DeQueue(Q,e)){
printf("\t%d",e);//234567891
}
}
printf("\n");
}
王道数据结构:队列的顺序实现-2c(个人)
最新推荐文章于 2024-07-25 23:22:43 发布