| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2164 人关注过本帖
标题:顺序循环队列问题
取消只看楼主 加入收藏
蒹葭1
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-8
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:2 
顺序循环队列问题
设队列的元素类型为char,实现顺序循环队列的各种基本操作的程序:
① 初始化队列Q;
② 判断队列Q是否为空;
③ 入队操作。循环调用入队操作,将若干元素(不少于10个)入队;
④ 出队操作,出队一个元素,并输出该元素;
⑤ 输出队列元素个数;
⑥ 调用入队操作,依次入队4个元素;
⑦ 输出队列序列;
⑧ 主函数通过函数调用实现以上各项操作。
#include<stdio.h>
#include<stdlib.h>

typedef char ElemType;
#define maxqsize 100

typedef struct
{
    ElemType *base;
    int front;
    int rear;
}SqQueue;

void InitQueue(SqQueue &q)                    //初始化队列
{
    q.base =(ElemType *)malloc(sizeof(SqQueue));
    if(!q.base )                            //存储分配失败
        exit(0);
    q.front=q.rear=0;
}

void Destory(SqQueue &q)                    //销毁队列
{
    if(q.base)
        free(q.base);
    q.base=NULL;
    q.front =q.rear =0;
}

int QueueEmpty(SqQueue *q)                    //判断队列是否为空
{
    return(q->front==q->rear);
}

int EnQueue(SqQueue &q,ElemType e)            //入队
{
    if((q.rear+1)%maxqsize == q.front)
        return 0;
    q.rear=(q.rear+1)%maxqsize;
    q.base[q.rear]=e;
    return 1;
}

int DeQueue(SqQueue &q,ElemType &e)        //出队
{
    if(q.front == q.rear)
        return 0;
    q.front=(q.front+1)%maxqsize;
    e=q.base[q.front];
    return 1;
}

void main()
{
    ElemType e;
    SqQueue *q;
    int i=0,n,m=4;
    int a[maxqsize];
    printf("初始化队列\n");
    InitQueue(q);
    printf("输入若干元素入队\n");
    while(a[i]!='\n')
    {
        scanf("%d",&a[i]);
        i++;
    }
    n=i;
    for(i=0;i<n;i++)
    {
        if(EnQueue(q,a[i])==0){
            printf("队满,不能入队\n");
            break;}
    }
    printf("队列为%s\n",(QueueEmpty(q)?"空":"非空"));
    printf("出队一个元素:");
    DeQueue(q,e);
    printf("%d",e);
    printf("\n队列元素个数为:%d\n",n);
    printf("依次入队四个元素:");
    for(i=0;i<m;i++)
        {
            scanf("%d",&e);
            if(EnQueue(q,e)==0){
            printf("队满,不能入队\n");
            break;}
    }
    printf("输出队列序列:");
    for(i=0;i<(m+n);i++)
    {
        DeQueue(q,e);
        printf("%d ",e);
    }
    Destory(q);
}
搜索更多相关主题的帖子: base 队列 元素 printf 入队 
2020-04-29 09:31
蒹葭1
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-8
收藏
得分:0 
这段代码总是出错改了很多遍了,求大佬帮忙
2020-04-29 09:32
蒹葭1
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-8
收藏
得分:0 
回复 3楼 forever74
就是。。。。很难说,每个自定义函数都有同一个问题,说是缺了} 就很奇怪 不明白
2020-04-29 22:31
快速回复:顺序循环队列问题
数据加载中...
 
   



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

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