注册 登录
编程论坛 数据结构与算法

队列中的问题请教下!!!!

笔墨痕干 发布于 2014-05-20 20:30, 563 次点击
#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 编辑 ]
3 回复
#2
wu27826418032014-05-21 16:44
//Print(&q,i);(1)和void Print(CirQueue *q)//输出对中的数据
传的参数不一样!!  为何你要加上i;
#3
wu27826418032014-05-21 16:45
用一个菜单选择功能看起来更直观!
#4
笔墨痕干2014-05-22 18:48
回复 2 楼 wu2782641803
不是那个i是我实验用的,忘了删除!!!!!但是没成功!!!我在代码中把那个改过来了!!!你让我用菜单形式的我以后会注意的,但是你再帮我看看代码吧!!我想了老长时间,但是怎么也想不出来!!!求教!!谢谢了!!!

[ 本帖最后由 笔墨痕干 于 2014-5-22 18:54 编辑 ]
1