C++创建链表问题

cpp#include
usingnamespacestd;
structnode
{
chardata;
node*next;
};
;node*Create();
;voidshow(node*head);
intmain()
{
node*head;
head=Create();
show(head);
return0;
}
node*Create()
{
chartemp;
node*head=NULL;
node*next=NULL;
node*r=head;
node*PS;
cout<<"请输入"<while(temp!='*')
{
cin>>temp;
PS=newnode;
PS->data=temp;
PS->next=NULL;
if(head==NULL)
{
head=PS;
}
else
{
r->next=PS;
}
r=PS;
}
returnhead;
}
voidshow(node*head)
{
node*read=head;
while(read!=NULL)
{
cout<data;
read=read->next;
}
cout<}
把r=PS移动到else里面为什么不行啊
就是C++
else
{
r->next=PS;
r=PS;
}
求教!谢谢。。
FFIVE
浏览 402回答 2
2回答

白板的微信

放到外面说明当head==NULL成立的时候也需要执行r=PS。那么为什么每次增加节点都需要执行r=PS呢?你顺着逻辑想想吧。。好吧,其实是这样的,按你的想法放到里面,增加第一个节点的时候head==NULL成立,r=PS并不会执行,那么第二次增加节点的时候r还是等于NULL但head==NULL不成立,于是执行r->next=PS时程序挂掉。。r这个指针其实指向的是当前链表最后一个节点。PS..申明node结构的时候应该是node*next吧。。。

皈依舞

node*head=NULL;node*next=NULL;node*r=head;此时r=NULL,然后r->next=PS;r=PS;相当于NULL->next=PS...然后大家就呵呵了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript