关于环形队列的出队问题 程序有点问题 帮忙看看
//环形队列基本运算算法#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int front,rear; //队首和队尾指针
} SqQueue;
//初始化队列
void InitQueue(SqQueue *&q)
{ q=(SqQueue *)malloc (sizeof(SqQueue));
q->front=q->rear=-1;
}
//销毁队列
void DestroyQueue(SqQueue *&q)
{
free(q);
}
//判断队列是否为空
bool QueueEmpty(SqQueue *q)
{
return(q->front==q->rear);
}
//进队列
bool enQueue(SqQueue *&q,ElemType e)
{ if ((q->rear+1)%MaxSize==q->front) //队满上溢出//if ((q->rear==MaxSize-1);
return false;
q->rear=(q->rear+1)%MaxSize;//q->rear++;
q->data[q->rear]=e;
return true;
}
//出队列
bool deQueue(SqQueue *&q,ElemType &e)
{ if (q->front==q->rear) //队空下溢出
return false;
q->front=(q->front+1)%MaxSize;//q->front++;
e=q->data[q->front];
return true;
}
int main()//主函数
{
int n;
char i;
ElemType e;
SqQueue *sq;
InitQueue(sq);
printf("(1)队列q已被初始化!\n");
printf("(2)队列");
if(QueueEmpty(sq))
printf("为空队列!");
else
printf("不为空队列!");
printf("\n");
printf("(3)请输入元素的个数:");
scanf("%d",&n);
printf("请输入要入队列的元素:");
for(i=0;i<n;i++)
{ enQueue(sq,e);
scanf("%*c%c",&e);
}
if(enQueue(sq,e))
printf("入队列成功!");
else{
printf("入队列不成功!");
}
printf("\n");
//出队一个元素
printf("(4)出队一个元素为");
deQueue(sq,e);
if(deQueue(sq,e)==0)
printf("队空");
else
printf("%c",e);
printf("\n");
fflush(stdin);
printf("(5)请输入继续入队列的元素:");
for(i=0;i<n;i++)
{ enQueue(sq, e);
scanf("%c",&e);
}
printf("(6)队列q的出队列序列为");
while(!(QueueEmpty(sq))){
printf("%c",e);
deQueue(sq,e);
}
printf("\n");
DestroyQueue(sq);
printf("(7)队列q已被释放!");
system("pause");
}
程序正确的出队应该是bcdef