| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 563 人关注过本帖
标题:队列中的问题请教下!!!!
只看楼主 加入收藏
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
结帖率:84.21%
收藏
已结贴  问题点数:20 回复次数:3 
队列中的问题请教下!!!!
#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 编辑 ]
搜索更多相关主题的帖子: include include 
2014-05-20 20:30
wu2782641803
Rank: 2
等 级:论坛游民
帖 子:65
专家分:46
注 册:2013-10-28
收藏
得分:14 
//Print(&q,i);(1)和void Print(CirQueue *q)//输出对中的数据
传的参数不一样!!  为何你要加上i;
2014-05-21 16:44
wu2782641803
Rank: 2
等 级:论坛游民
帖 子:65
专家分:46
注 册:2013-10-28
收藏
得分:0 
用一个菜单选择功能看起来更直观!
2014-05-21 16:45
笔墨痕干
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2014-3-24
收藏
得分:0 
回复 2 楼 wu2782641803
不是那个i是我实验用的,忘了删除!!!!!但是没成功!!!我在代码中把那个改过来了!!!你让我用菜单形式的我以后会注意的,但是你再帮我看看代码吧!!我想了老长时间,但是怎么也想不出来!!!求教!!谢谢了!!!

[ 本帖最后由 笔墨痕干 于 2014-5-22 18:54 编辑 ]
2014-05-22 18:48
快速回复:队列中的问题请教下!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025293 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved