| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 556 人关注过本帖
标题:队列问题,编译出错。
取消只看楼主 加入收藏
luojie5683
Rank: 2
来 自:重庆
等 级:论坛游民
帖 子:69
专家分:49
注 册:2011-10-10
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:1 
队列问题,编译出错。
#include<iostream.h>
#include<malloc.h>
typedef char ElemType;

typedef struct QNode
{
    ElemType data;
    struct QNode *next;
}QType;

typedef struct qptr
{
    QType *rear;
}LinkQueue;

void InitQueue(LinkQueue*&lq)     //初始化队列
{   
    lq=(LinkQueue*)malloc(sizeof(LinkQueue));
    lq->rear=NULL;    //初始空队列
}

int QueueEmpty(LinkQueue*lq)
{
    if(lq->rear-1==0)
        return 1;
    else
        return 0;
}

void EnQueue(LinkQueue*&lq,ElemType x)    //入队
{
    QType *s;
    s=(QType*)malloc(sizeof(QType));    //创建新结点
    s->data=x;
    s->next=NULL;
    lq->rear=s;        //队尾指针指向当向结点
}

int DeQueue(LinkQueue*&lq,ElemType &x)     //出队
{
    QType *p;
    if(QueueEmpty(lq))        //判断是否空队
        return 0;
    p=lq->next;
    x=p->data;
    lq->next=p->next;         //取出要出队元素的结点
    free(p);
    return 1;
}

void main()
{
    LinkQueue *lq;
    ElemType e;
    //lq=(LinkQueue*)malloc(sizeof(LinkQueue));
    //lq->next=NULL;
    InitQueue(lq);
    if(QueueEmpty(lq))
        cout<<"队空"<<endl;
    else
        cout<<"队不空"<<endl;
    cout<<"a"<<"进队"<<endl;EnQueue(lq,'a');
    cout<<"b"<<"进队"<<endl;EnQueue(lq,'b');
    cout<<"c"<<"进队"<<endl;EnQueue(lq,'c');
    cout<<"d"<<"进队"<<endl;EnQueue(lq,'d');
    cout<<"e"<<"进队"<<endl;EnQueue(lq,'e');
    if(QueueEmpty(lq))
        cout<<"队空"<<endl;
    else
        cout<<"队不空"<<endl;
    cout<<"出队次序:";
    while(!QueueEmpty(lq))
    {
        DeQueue(lq,e);
        cout<<e<<"        ";
    }
}




问题描述:一个带头结点的链表表示队列,并且只设一个指针指向队尾元素的结点(注意不设头指针),写出相应的入队列和出队列的算法,以上是我自己写的代码,编译出错信息为:D:\c语言\Debug\P109 、5.CPP(44) : error C2039: 'next' : is not a member of 'qptr'
          D:\c语言\Debug\P109 、5.CPP(12) : see declaration of 'qptr'
          D:\c语言\Debug\P109 、5.CPP(46) : error C2039: 'next' : is not a member of 'qptr'
          D:\c语言\Debug\P109 、5.CPP(12) : see declaration of 'qptr'
请高手给我说说错在哪里?谢谢。
搜索更多相关主题的帖子: void include return 
2012-05-11 14:20
luojie5683
Rank: 2
来 自:重庆
等 级:论坛游民
帖 子:69
专家分:49
注 册:2011-10-10
收藏
得分:0 
回复 2楼 寒风中的细雨
#include<iostream.h>
#include<malloc.h>
typedef char ElemType;

typedef struct QNode
{
    ElemType data;
    struct QNode *next;
}QType;

typedef struct qptr
{
    QType *rear;
}LinkQueue;

void InitQueue(LinkQueue*&lq)     //初始化队列
{   
    lq=(LinkQueue*)malloc(sizeof(LinkQueue));
    lq->rear=NULL;    //初始空队列
}

int QueueEmpty(LinkQueue*lq)
{
    if(lq->rear-1==0)
        return 1;
    else
        return 0;
}

void EnQueue(LinkQueue*&lq,ElemType x)    //入队
{
    QType *s;
    s=(QType*)malloc(sizeof(QType));    //创建新结点
    s->data=x;
    s->next=NULL;
    lq->rear=s;        //队尾指针指向当向结点
}

int DeQueue(LinkQueue*&lq,ElemType &x)     //出队
{
    QType *p;
    if(QueueEmpty(lq))        //判断是否空队
        return 0;
    p=lq->rear;
    x=p->data;
    lq->rear=p->next;         //取出要出队元素的结点
    free(p);
    return 1;
}

void main()
{
    LinkQueue *lq;
    ElemType e;
    InitQueue(lq);
    if(QueueEmpty(lq))
        cout<<"队空"<<endl;
    else
        cout<<"队不空"<<endl;
    cout<<"a"<<"进队"<<endl;EnQueue(lq,'a');
    cout<<"b"<<"进队"<<endl;EnQueue(lq,'b');
    cout<<"c"<<"进队"<<endl;EnQueue(lq,'c');
    cout<<"d"<<"进队"<<endl;EnQueue(lq,'d');
    cout<<"e"<<"进队"<<endl;EnQueue(lq,'e');
    if(QueueEmpty(lq))
        cout<<"队空"<<endl;
    else
        cout<<"队不空"<<endl;
    cout<<"出队次序:";
    while(!QueueEmpty(lq))
    {
        DeQueue(lq,e);
        cout<<e<<"        ";
    }
}
这是我改的,编译通过,但是还是有点问题,麻烦你在帮我看看,谢谢。
2012-05-13 21:38
快速回复:队列问题,编译出错。
数据加载中...
 
   



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

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