在链接列表的末尾插入。为什么S节点在每次插入时都变为空

时间:2019-03-30 23:55:42

标签: c++

void insertnode(node *s, int a)
{
    node *newnode = (struct node*)malloc(sizeof(struct node));
    newnode->data = a;
    newnode->next = NULL;

    if(s==NULL)
    {
        s = newnode;
    }
    else
    {  
        node *p = s;
        while(p->next!=NULL)
        {
             p=p->next;
        }
        p->next = newnode;
   }
}
int main()
{
    node *s;
    insertnode(s,5); //inserting element at the end

    insertnode(s,10); //inserting element at the end
    return 0;
}

无法理解为什么s仍为null 插入。插入后打印无输出。
请问我对初学者的疑问

1 个答案:

答案 0 :(得分:0)

s为空,因为您的代码s = newnode会将本地s设置为一个新值,而该值不会更新{{1 }}。您可以让main()返回insertnode()指针(例如,不推荐使用s),也可以让s = insertnode(s,5)创建一个sentinel node作为列出您要在第一次调用时传递给main()的占位符(推荐)。