#include<stdio.h>
#include<stdlib.h>
#define MaxSize 10
typedef struct{
int data[MaxSize];
int front,rear,size;
}SqQueue;
void InitQueue(SqQueue &Q){
Q.rear = Q.front = Q.size = 0;
}
bool QueueEmpty(SqQueue Q){
if(0 == Q.size){
return true;
}else{
return false;
}
}
bool EnQueue(SqQueue &Q,int e){
if(MaxSize == Q.size){
return false;
}
Q.data[Q.rear] = e;
Q.rear = (Q.rear + 1) % MaxSize;
++Q.size;
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.size;
return true;
}
bool GetHead(SqQueue Q,int &e){
if(QueueEmpty(Q)){
return false;
}
e = Q.data[Q.front];
return true;
}
void PrintStack(SqQueue Q){
for(int i = Q.front,j = Q.size; j > 0 ; --j,i = (i + 1)%MaxSize){
printf("\t%d",Q.data[i]);
}
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);
for(int i = Q.size; i > 0; --i){
int e;
if(DeQueue(Q,e)){
printf("\t%d",e);//1234567891
}
}
}