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;
} 展开
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;
} 展开
展开全部
楼主的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;
}
这里没有给出链表的删除操作,你再学习完后请自行添加。
追答
首先你先说要设计成循环链表,也就是形成一个环形链表,那么链表赋值完后要将链表尾的next指向链表头,如果仅仅是单链表只需将q->rear->next = q->front;删除;
改为for(int i=0;i<2;i++)只是因为初始化时只输入2个Qnode;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询