tiaya01 2021-11-18 18:30 采纳率: 85.7%
浏览 15
已结题

链队列,这是什么原因啊?

链队列,这是因为什么啊?
应该怎么改啊?
谢谢!

img

img


#include<iostream>
using namespace std;

typedef struct{
    int id;
    char name[10];
}QElemtype;
typedef struct qNode{
    QElemtype data;
    struct qNode *next;
}qNode,*QueuePtr;
typedef struct{
    qNode *front;
    qNode *rear;
}LinkQueue;

void InitQueue(LinkQueue &Q);
void EnQueue(LinkQueue &Q,QElemtype e);
void DeQueue(LinkQueue &Q);
int QueueEmpty(LinkQueue &Q,QElemtype e);

int main(){
    LinkQueue s;
    QElemtype newdata;
    InitQueue(s);
    int n;
    cout << "请输入链队的长度:" << endl;
    cin >> n;
    for(int i=1;i<=n;i++){
        cout << "输入链队的第" << i << "个元素" << endl;
        cin >> newdata.id >> newdata.name;
        EnQueue(s,newdata);
    }
    cout << "请输出元素:" << endl;
    while (!QueueEmpty(s,newdata))
    {
        DeQueue(s);
    }
    return 0;
}
//链队的初始化
void InitQueue(LinkQueue &Q){
    Q.front=Q.rear=new qNode;
    Q.front->next=NULL;
} 
//入队
void EnQueue(LinkQueue &Q,QElemtype e){
    QueuePtr p;
    p=new qNode;
    p->data=e;
    p->next=NULL;
    Q.rear=p;
}
//出队
void DeQueue(LinkQueue &Q){
    QElemtype &e;
    QueuePtr p;
    if(Q.front==Q.rear)
    exit(1);
    p=Q.front->next;
    e=p->data;
    Q.front->next=p->next;
    if(Q.rear==p)
    Q.rear=Q.front;
    delete(p);
} 
//判断栈是否为空
int QueueEmpty(LinkQueue &Q){
    if (Q.front==Q.rear)
        return 1;
    else
        return 0;
}
  • 写回答

1条回答 默认 最新

  • 「已注销」 2021-11-18 19:04
    关注

    引用不能这么写,改成QElemtype &e=p->data;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月26日
  • 已采纳回答 11月18日
  • 创建了问题 11月18日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器