| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1420 人关注过本帖
标题:帮忙看一个代码(循环队列)~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
结帖率:99.25%
收藏
已结贴  问题点数:100 回复次数:2 
帮忙看一个代码(循环队列)~
这个代码不是自己弄的,就是帮忙看看,最近弄别的去没啥弄代码了,就是帮忙看看,说是逻辑问题~

程序代码:

#include<stdio.h>
#define MAXSIZE 4
typedef struct
{
    int rear;
    int front;
    int *base;
}queue,*que;
void inqueue(que q,int e);//入队
void dequeue(que q,int*e);//出队

int isempty(que q);
int getlength(que q);
void print(que q);
int main( void )
{
    queue q;
    int e,length;
    init(&q);
    inqueue(&q,1);
    inqueue(&q,2);
    inqueue(&q,3);
    print(&q);
    dequeue(&q,&e);
    printf("e=%d\n",e);
    dequeue(&q,&e);
    printf("e=%d\n",e);
    dequeue(&q,&e);
    printf("e=%d\n",e);
    print(&q);
    inqueue(&q,4);
        inqueue(&q,5);
        inqueue(&q,6);
        print(&q);
        dequeue(&q,&e);
    printf("e=%d\n",e);
        dequeue(&q,&e);
    printf("e=%d\n",e);
        dequeue(&q,&e);
    printf("e=%d\n",e);
        print(&q);
        
    return 0;

}
int init(que q)
{
    q->base=(que)malloc(sizeof(queue)*MAXSIZE);
    if(!(q->base))
        return 0;
    q->front=q->rear=0;
    return 1;
}
void inqueue(que q,int e)
{//入队列 当前队列没有满【判断队满(rear+1)%MAXSIZE==front】就继续入
    if((q->rear+1)%MAXSIZE!=q->front) 
    {    
        q->base[q->rear]=e;
        q->rear=(q->rear+1)%MAXSIZE;
    }


}
void dequeue(que q,int *e)
{//出队列 当前这个队列不为空
    if(q->front!=q->rear)
    {    
        *e=q->base[q->front];
                q->front=(q->front+1)%MAXSIZE;
    }    
}
void print(que q)
{
    for(int i=0;i<4;i++)
    {
        printf("%d ",q->base[i]);
    }
    printf("\n");
}
int getlength(que q)
{
    int length=0;
    length=(q->rear-q->front+MAXSIZE)%MAXSIZE;
    printf("length:%d\n",length);
    return length;
}

搜索更多相关主题的帖子: 队列 int base void printf 
2018-08-10 09:02
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:100 
改正了语法错误,至于逻辑嘛,你的表述不清楚,不知道你要的是什么结果,输入什么,得到什么。

改正1:添加头文件:#include<malloc.h>
改正2:添加函数声明:int init(que q);
改正3:init()函数里  q->base=(que)malloc(sizeof(queue)*MAXSIZE);  改为  q->base=(int *)malloc(sizeof(queue)*MAXSIZE);

126邮箱联系方式:no1xijin@126. com
2018-08-10 09:22
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 2楼 no1xijin
说是入队出队方面的问题,具体点是返回值处理的问题,这个改改就可以了(表示那个人类真是严谨)~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-08-10 10:06
快速回复:帮忙看一个代码(循环队列)~
数据加载中...
 
   



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

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