| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 649 人关注过本帖
标题:一个简单的队列,编译出错,求大神指导啊~~
只看楼主 加入收藏
岗地画面
Rank: 2
等 级:论坛游民
帖 子:20
专家分:26
注 册:2011-8-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
一个简单的队列,编译出错,求大神指导啊~~
一个简单的队列,实现入队,出队,销毁队列等操作,编译没问题可就是运行不了啊,求指导啊啊!!!代码如下:
#include<stdio.h>
#include<stdlib.h>
//初始化队列 ,出队,入队,销毁队列
typedef char ElemType;
typedef struct QNode{
    ElemType data;
    struct QNode *next;
}QNode,*QueuePtr;

typedef struct {
    QueuePtr front;
    QueuePtr rear;
}LinkQueue;

void init_Queue(LinkQueue *q)
{
    q->front=(QueuePtr) malloc ( sizeof(QNode) );
    if(!q->front)
    exit(0);
    q->front->next=NULL;   
}
void EnQueue(LinkQueue *q,ElemType e)
{
    QueuePtr p;
    p=(QueuePtr) malloc ( sizeof(QNode) );
    if(!p)exit(0);
   
    p->data=e;
    p->next=NULL;
   
    q->rear->next=p;
    q->rear=p;
}
void DeQueue(LinkQueue *q,ElemType *e)      //出队要考虑三种情况(1)队列为空(2)队列只有一个元素
{                                           // 这时需要修改尾指针(3)队列有多于1个的元素
    QueuePtr p;
    if(q->front==q->rear)//情况(1)
    return ;
    p=q->front->next;
    *e=p->data;
    q->front->next=p->next;
    if(q->rear==p) //情况(3)
    q->rear=q->front;
    free(p);
}

void DestroyQueue(LinkQueue *q)
{
    while(q->front)
    {
        q->rear=q->front->next;
        free(q->front);
        q->front=q->rear;
    }
}
int main()
{
    char c;
    LinkQueue *q;
    init_Queue(q);
    while(scanf("%c",&c)&&c!='@')
    {
        EnQueue(q,c);
    }
    while(q->front!=q->rear)
    {
        DeQueue(q,&c);
        putchar(c);   
    }
    putchar('\n');
    return 0;
}
搜索更多相关主题的帖子: include 指导 
2013-05-01 16:21
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:20 
改了两处

程序代码:
void init_Queue(LinkQueue *q)
{
    q->front=(QueuePtr) malloc ( sizeof(QNode) );
    q->rear = q->front;    //这一句还是有必要的
    if(!q->front)
    exit(0);
    q->front->next=NULL;    
}

int main()
{
    char c;
    LinkQueue q;
    init_Queue(&q);
    while(scanf("%c",&c)&&c!='@')
    {
        EnQueue(&q,c);
    }
    while(q.front!=q.rear)
    {
        DeQueue(&q,&c);
        putchar(c);    
    }
    putchar('\n');
    DestroyQueue(&q);
    return 0;
}


[fly]存在即是合理[/fly]
2013-05-01 16:34
岗地画面
Rank: 2
等 级:论坛游民
帖 子:20
专家分:26
注 册:2011-8-2
收藏
得分:0 
大神,问下,你改的这句LinkQueue q;为什么这样写LinkQueue *q;会运行不了,指针传递不是也可以修改值吗?
2013-05-01 16:57
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
LinkQueue *q = (LinkQueue *) malloc (sizeof(LinkQueue))

用指针的先这样写


[fly]存在即是合理[/fly]
2013-05-01 21:32
岗地画面
Rank: 2
等 级:论坛游民
帖 子:20
专家分:26
注 册:2011-8-2
收藏
得分:0 
回复 4楼 azzbcc
感谢大神~~
2013-05-02 00:15
快速回复:一个简单的队列,编译出错,求大神指导啊~~
数据加载中...
 
   



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

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