#include<stdio.h>
#define maxSize 20
typedef struct {
int data[maxSize];
int front;
int rear;
int tag;
} SqQueue;
void initQueue(SqQueue &qu) {
qu.front=0;
qu.rear=0;
qu.tag=0;
}
int Count(SqQueue sq)
{
return(sq.rear-sq.front+maxSize)%maxSize;
}
int isQueueEmpty(SqQueue qu) {
if(qu.tag==0&&qu.front==qu.rear) {
return 1;
} else {
return 0;
}
}
int isQueueFull(SqQueue qu) {
if(qu.tag==1&&qu.front==qu.rear) {
return 1;
} else {
return 0;
}
}
int enQueue(SqQueue &qu,int x) {
if(isQueueFull(qu)==1) {
return 0;
} else {
qu.rear=(qu.rear+1)%maxSize;
qu.data[qu.rear]=x;
qu.tag=1;
return 1;
}
}
int deQueue(SqQueue &qu,int &x) {
if(isQueueEmpty(qu)==1) {
return 0;
} else {
qu.front=(qu.front+1)%maxSize;
x=qu.data[qu.front];
qu.tag=0;
return 1;
}
}
void printQueue(SqQueue qu) {
printf("\n");
while(qu.rear!=qu.front) {
qu.front=(qu.front+1)%maxSize;
printf("%d\t",qu.data[qu.front]);
}
printf("\n");
}
int main() {
SqQueue qu;
int nums[]= {1,2,3,4,5,6,7,8,9,0};
int n=10;
initQueue(qu);
for(int i=0; i<n; i++) {
int m=enQueue(qu,nums[i]);
}
printQueue(qu);
int x;
deQueue(qu,x);
printQueue(qu);
return 0;
}
我敲的代码是这样的,但是删除的是队头元素,怎么可以只删除队尾元素