数据结构删除循环队列中的队尾元素


#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;
}


我敲的代码是这样的,但是删除的是队头元素,怎么可以只删除队尾元素