标题:关于链式结构的队列的一个问题,请大家指导。。
只看楼主
南山浅悠然
Rank: 2
等 级:论坛游民
威 望:1
帖 子:53
专家分:92
注 册:2014-5-21
结帖率:100%
已结贴  问题点数:20 回复次数:5 
关于链式结构的队列的一个问题,请大家指导。。

    添加if(pFirst->front == pFirst->rear)
        {
            puts("queue is empty!!");
            exit(0);   
        }出队失败。。,删除后出队成功

程序代码:
#include <stdio.h>
#include <stdlib.h>

typedef struct NQUEUE
{
    int data;
    struct NQUEUE *next;
}nQueue;

typedef struct LQUEUE
{
    nQueue *front;
    nQueue *rear; 
}lQueue;

void display(lQueue *);
void init(lQueue *);
void enQueue(lQueue *, int);
void deQueue(lQueue *);

int main(void)
{
    lQueue *pFirst = (lQueue *)malloc(sizeof(lQueue));
    int data = 0;
    int i = 0;
    
    init(pFirst);
    
    for( i = 1; i < 8; i++ )
    {
        enQueue(pFirst, i);
    }
    
    display(pFirst);

    deQueue(pFirst);
    deQueue(pFirst);
    puts("");

    display(pFirst);
    
    return 0;
}



void display(lQueue *pFirst)
{
    nQueue *tmp = pFirst->front->next;
    
    while(tmp)
    {
        printf("%3d", tmp->data);
        tmp = tmp->next; 
    }
}

void init(lQueue *pFirst)
{
    pFirst->front = pFirst->rear = (nQueue *)malloc(sizeof(nQueue));
    pFirst->front->next = NULL;
    pFirst->front->data = 0;    
}

void enQueue(lQueue *pFirst, int e)
{
    nQueue *tmp = (nQueue *)malloc(sizeof(nQueue));
    tmp->data = e;
    tmp->next = NULL;
    
    pFirst->rear->next = tmp;
    pFirst->rear = tmp;
}

void deQueue(lQueue *pFirst)
{
    nQueue *tmp = NULL;
    if(pFirst->front == pFirst->rear)//问题所在。。。
    {
        puts("queue is empty!!");
        exit(0);    
    }
    
    tmp = pFirst->front->next;
    pFirst->front->next = tmp->next;
    
    if(tmp == pFirst->rear);
    {
        pFirst->rear = pFirst->front;
    }
    
    free(tmp);
    tmp = NULL;
    
}


搜索更多相关主题的帖子: int data next void tmp 
2017-04-30 10:54
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:20 
if(tmp == pFirst->rear);
    {
        pFirst->rear = pFirst->front;
    }

~~~~~~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-30 11:24
南山浅悠然
Rank: 2
等 级:论坛游民
威 望:1
帖 子:53
专家分:92
注 册:2014-5-21
得分:0 
回复 2楼 九转星河
天啊!!!!!!!
2017-04-30 11:28
南山浅悠然
Rank: 2
等 级:论坛游民
威 望:1
帖 子:53
专家分:92
注 册:2014-5-21
得分:0 
回复 2楼 九转星河
多谢!!我现在想静静。。
2017-04-30 11:31
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 

以下是引用南山浅悠然在2017-4-30 10:54:13的发言:


    添加if(pFirst->front == pFirst->rear)
        {
            puts("queue is empty!!");
            exit(0);   
        }出队失败。。,删除后出队成功

我想到了一个段子~~

为了证明螃蟹的听觉在腿上!一个科学家捉了只螃蟹并冲它大吼!螃蟹很快就跑!
然后捉回来再冲它吼!螃蟹又跑了!最后科学家把螃蟹的腿都切了!
又对着螃蟹大吼!螃蟹果然一动不动……实验证明螃蟹的听觉在腿上。


感觉调试程序的方法应该是在关键位置设置断点然后观察变量的变化~这样一般问题很快就能找出原因了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-04-30 12:53
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
回复 5楼 九转星河
笑到我了,赔钱
2017-04-30 16:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-476545-1-1.html




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

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