| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 294 人关注过本帖
标题:帮忙看一个代码(循环队列)~
只看楼主 加入收藏
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5014
专家分:13993
注 册:2016-10-22
结帖率:100%
  已结贴   问题点数: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;
}

2018-08-10 09:02
no1xijin
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:江西
等 级:版主
威 望:11
帖 子:157
专家分:944
注 册: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);
2018-08-10 09:22
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5014
专家分:13993
注 册: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.023533 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved