C++创建链表问题
怪我咯
怪我咯 2017-04-17 11:49:59
[C++讨论组]
cpp#include<iostream>
using namespace std;
struct node
{
    char data;
    node *next;
};
;node *Create();
;void show(node *head);
int main()
{
    node *head;
    head=Create();
    show(head);
    return 0;
}
node *Create()
{
    char temp;
    node *head=NULL;
    node *next=NULL;
    node *r=head;
    node *PS;
    cout<<"请输入"<<endl;
    while(temp!='*')
{
    cin>>temp;
    PS=new node;
    PS->data=temp;
    PS->next=NULL;
    if(head==NULL)
    {
        head=PS;
    }
    else
    {
        r->next=PS;
    }
        r=PS;
}
return head;
}
void show(node *head)
{
    node *read=head;
    while(read!=NULL)
    {
        cout<<read->data;
        read=read->next;
    }
    cout<<endl;
}

把r=PS移动到else里面为什么不行啊
就是
C++ else { r->next=PS; r=PS; }
求教!谢谢。。

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(2)
天蓬老师

放到外面说明当head == NULL成立的时候也需要执行r = PS。那么为什么每次增加节点都需要执行r = PS呢?你顺着逻辑想想吧。。

好吧,其实是这样的,按你的想法放到里面,增加第一个节点的时候head == NULL成立,r = PS并不会执行,那么第二次增加节点的时候r还是等于NULLhead == 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
...

然后大家就呵呵了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号