c++问题 程序哪里出错了。不能正确的输出 队列信息。 20

#include<iostream>usingnamespacestd;structQnode{intnum;charname[10];structQnode*next;... #include<iostream>

using namespace std;

struct Qnode
{
int num;
char name[10];
struct Qnode *next;
};

struct Liqueue
{
Qnode *front;
Qnode *rear;
};

void InitStLink(Liqueue *p)
{
p = new Liqueue;
p->front = p->rear = NULL;
}

void CreateStLink(Liqueue *q)
{
Qnode *p2;
cout << "姓名---数字\n";
p2 = new Qnode;
cin >> p2->name >> p2->num;
p2->next = NULL;
for(int i = 0; i < 2; i++)
{
if(q->rear == NULL)
q->front = q->rear = p2;
else
{
q->rear->next = p2;
q->rear = p2;
}
p2 = new Qnode;
cin >> p2->name >> p2->num;
}
}

void DispStLink(Liqueue *q)
{
Qnode *p3 = new Qnode;
p3 = q->front->next;
while(p3!=NULL)
{
cout << "姓名:" << "\tnum:" ;
cout << p3->name << " "<< p3->num << endl;
p3 = p3->next;
}
}
int main()
{
Liqueue *qnode= new Liqueue;
void InitStLink(Liqueue *p); //初始化链表
void CreateStLink(Liqueue *p); //创建循环链表,
void DispStLink(Liqueue *p); //输出链表的信息
InitStLink(qnode);
CreateStLink(qnode);
DispStLink(qnode);
return 0;
}
展开
 我来答
yuanpan666
2015-11-26 · 超过29用户采纳过TA的回答
知道答主
回答量:92
采纳率:0%
帮助的人:68万
展开全部

楼主的C++基础知识太差了,指针使用需加强,依照要设计成循环链表,代码可参考如下

#include<iostream>

using namespace std;

struct Qnode
{
int num;
char name[10];
Qnode *next;
};

struct Liqueue
{
Qnode *front;
Qnode *rear;

};

void InitStLink(Liqueue *p)
{
p->front = p->rear = NULL;
}


void  CreateStLink(Liqueue *q)
{
Qnode *p2;
cout << "姓名---数字\n";


for (int i = 0; i < 2; i++)
{

p2 = new Qnode;
cin >> p2->name >> p2->num;
if (q->rear == NULL)
q->front = q->rear = p2;
else
{
q->rear->next = p2;
q->rear = p2;
}
}
q->rear->next = q->front;

}

void DispStLink(Liqueue *q)
{
Qnode *p3 = q->front;
while (p3 != NULL)
{
cout << "姓名:" << "\tnum:\n";
cout << p3->name << "  " << p3->num << endl;
p3 = p3->next;
}
}
int main()
{
Liqueue *qnode = new Liqueue;

InitStLink(qnode);
CreateStLink(qnode);
DispStLink(qnode);
return 0;
}

 这里没有给出链表的删除操作,你再学习完后请自行添加。

追问

追答
  1. 首先你先说要设计成循环链表,也就是形成一个环形链表,那么链表赋值完后要将链表尾的next指向链表头,如果仅仅是单链表只需将q->rear->next = q->front;删除;

  2. 改为for(int i=0;i<2;i++)只是因为初始化时只输入2个Qnode;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式