能输出队头元素的值,但是删不掉队头元素
好奇为什么 orz求大神帮帮忙
代码如下
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 30
typedef struct
{
int *base;
int front;
int rear;
}SqQueue;
void init(SqQueue *Q)
{
Q->base=(int *)malloc(MAXSIZE*sizeof(int));
if(Q->base==0)
exit(1);
Q->front=Q->rear=0;
}
void create(SqQueue *Q)
{
int i;
for(i=1;i<=20;i++)
{
Q->base[i]=i;
Q->rear=(Q->rear+1)%MAXSIZE;
}
Q->front=Q->base[1];//让头指针指向队列的第一个元素
if((Q->rear+1)%MAXSIZE==Q->front)
printf("error");
}
void input(SqQueue *Q,int e)
{
int i;
if(Q->front==(Q->rear+1)%MAXSIZE)
printf("队满溢出");
Q->base[Q->rear]=e;
Q->rear=(Q->rear+1)%MAXSIZE;
for(i=1;i<MAXSIZE;i++)
{
printf("%d\n",Q->base[i]);
}
}
void output(SqQueue *Q,int *e)
{
int i;
if(Q->front==Q->rear)
printf("队空");
*e=Q->base[Q->front];
Q->front=(Q->front+1)%MAXSIZE;//这行代码加不加输出结果毫无区别。。。
for(i=1;i<MAXSIZE;i++)
{
printf("%d\n",Q->base[i]);
}
}
int main()
{
SqQueue *Q;
int e;
scanf("%d",&e);
init(Q);
create(Q);
input(Q,e);
output(Q,&e);
printf("%d",e);
printf("Hello world!\n");
return 0;
}