C++单链表输出问题

修改下列代码:使它输入和它的输出顺序一致(现在是逆序的)#include<iostream>usingnamespacestd;typedefintElemType;st... 修改下列代码:
使它输入和它的输出顺序一致(现在是逆序的)

#include<iostream>
using namespace std;
typedef int ElemType;
struct NodeType
{
ElemType data;
NodeType *next;
};
class LinkList
{
private:
NodeType *Head;
public:
LinkList();
~LinkList();
void Creat();
void Insert();
void Display();
ElemType Delete();
};
LinkList::LinkList()
{
Head=new NodeType;
Head->next=NULL;
Head->data=0;
}
LinkList::~LinkList()
{
NodeType *p=Head->next;
while(p!=NULL)
{
Head->next=p->next;
delete p;
p=Head->next;
}
delete Head;
cout<<"已经删除链表!"<<endl;
}
void LinkList::Display()
{
NodeType *p;
p=Head->next;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->next;
}
cout<<endl;
}
void LinkList::Creat() //逆转链表元素
{
NodeType *s;
ElemType x;
cout<<"请输入一组数据并且以0结束。"<<endl;
cin>>x;
while(x!=0)
{
s=new NodeType;
s->data=x;
s->next=Head->next;
Head->next=s;
cin>>x;
}
cout<<"链表插入结束链表建成!"<<endl;
}
void LinkList::Insert()
{
cout<<"要插入元素的位置:"<<endl;
int i;
cin>>i;
cout<<"要插入的元素:"<<endl;
ElemType x;
cin>>x;
NodeType *p,*q,*s;
int k=1;
p=Head;
q=p->next;
while(k<i && q!=NULL)
{
p=q;
q=q->next;
k++;
}
if(k==i)
{
s=new NodeType;
s->data=x;
p->next=s;
s->next=q;
cout<<"记录成功插入!"<<endl;
}
else
cout<<"插入记录失败!";
}
ElemType LinkList::Delete()
{
cout<<"输入要删除的元素:"<<endl;
int x;
cin>>x;
NodeType *p,*q;
ElemType y;
int k=1;
p=Head;
q=p->next;
while(q!=NULL && q->data!=x)
{
p=q;
q=q->next;
}
if(q->data==x)
{
y=q->data;
p->next=q->next;
delete q;
cout<<"记录成功删除!"<<endl;
}
else
{
cout<<"x不存在"<<endl;
y=-1;
}
return y;
}
void main()
{
LinkList h;
h.Creat();
h.Display();
h.Delete();
h.Display();
h.Insert();
h.Display();
}
展开
 我来答
糖二灰
2013-05-28 · TA获得超过3940个赞
知道小有建树答主
回答量:1052
采纳率:75%
帮助的人:1152万
展开全部
1,你创建链表的时候是每次输入一个数,放在了链表的头部,所以你输出的时候,自然就是倒序。
2,你链表的头节点居然没有存任何数据,只是作为一个标记用,这个有些浪费,不过也没有太大问题。
想要正序输出就要调整一下你的create函数,每次从链表尾部添加。
NodeType *p=Head->next;
while(p->next != NULL)
{
p=p->next;
}
这个就能找到尾节点,至于怎么在尾部添加,建议你自己练习一下,可以熟悉链表的操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
桃李花开武陵春B
2013-05-28
知道答主
回答量:5
采纳率:0%
帮助的人:3.2万
展开全部
把Creat改一下就行了:
void LinkList::Creat() //逆转链表元素
{
NodeType *s,*p;
p = Head;
ElemType x;
cout<<"请输入一组数据并且以0结束。"<<endl;
cin>>x;
while(x!=0)
{
s=new NodeType;
s->data=x;
p->next = s;
p = s;
cin>>x;
}
p->next = NULL;
cout<<"链表插入结束链表建成!"<<endl;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式