#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int front,rear,tag;
}SqQueue;
void InitQueue(SqQueue &Q){
Q.rear = Q.front = Q.tag = 0;
}
bool QueueEmpty(SqQueue Q){
if(Q.front == Q.rear && 0 == Q.tag){
return true;
}else{
return false;
}
}
bool EnQueue(SqQueue &Q,int e){
if(Q.front == Q.rear && 1 == Q.tag){
return false;
}
Q.data[Q.rear] = e;
Q.rear = (Q.rear + 1) % MaxSize;
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 == i && 1 == Q.tag){
printf("\t%d",Q.data[i]);
i = (i + 1) % MaxSize;
}
while(Q.rear != 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 == Q.front && 1 == Q.tag){
int e;
if(DeQueue(Q,e)){
printf("\t%d",e);//1
}
}
while(Q.rear != Q.front){
int e;
if(DeQueue(Q,e)){
printf("\t%d",e);//234567891
}
}
printf("\n");
}
王道数据结构:队列的顺序实现-1c(个人)
于 2023-04-30 19:45:47 首次发布