队列中的问题请教下!!!!
#include<stdio.h>#define MaxSize 21
typedef struct
{
int elem[MaxSize];
int front,rear;
}CirQueue;
//typedef CirQueue Queue;
void InitQueue(CirQueue *q)//队的初始化
{
q->front=q->rear=0;
}
void QueueEmpty(CirQueue *q)//判断队是否为空
{
if(q->front==q->rear)
printf("此队列是空队列\n\n");
else
printf("此队列不为空\n\n");
}
void AddQueue(CirQueue *q,int e)//进队
{
if(q->front==(q->rear+1)%MaxSize)
printf("队满,不允许输入数据\n\n");
else
{
q->rear=(q->rear+1)%MaxSize;
q->elem[q->rear]=e;
}
}
void Print(CirQueue *q)//输出对中的数据
{
if(q->front==q->rear)
printf("此队列是空队列!\n\n");
else
{
while(q->front!=q->rear)
{
printf("%d ",q->elem[(q->front+1)%MaxSize]);
q->front=(q->front+1)%MaxSize;
}
}
}
void DeleteQueue(CirQueue *q)//删除队中的元素
{
int e;
CirQueue *p;
p=q;
if(p->front==p->rear)
printf("此队列是空队列!\n\n");
else
{
e=p->elem[(p->front+1)%MaxSize];
p->front=(p->front+1)%MaxSize;
printf("%d",e);
}
}
int QueueLength(CirQueue *q)
{
return((q->rear+MaxSize-q->front)%MaxSize);
}
main()
{
//Queue *q;
CirQueue q;
int e,i;
int count=0;
InitQueue(&q);
QueueEmpty(&q);
printf("请往队列中输入数据,最多输入20个,以“-1”作为输入结束标志。\n\n");
while(1)
{
scanf("%d",&e);
count++;
if(e==-1||count>=20)
break;
else
AddQueue(&q,e);
}
QueueEmpty(&q);
i=QueueLength(&q);
printf("此队列的长度为:%d\n\n",i);
//Print(&q);(1)
DeleteQueue(&q);
printf("\n\n");
Print(&q);(2)
}
请问下怎样修改代码才能让第一个Print和第二个Print都执行,并且执行第一个Print时不影响后面的程序执行!!!!!!!谢谢!!!
[ 本帖最后由 笔墨痕干 于 2014-5-22 18:49 编辑 ]