c++ - 我尝试键入一个函数以在单向链表的末尾添加一个节点,但它不起作用

标签 c++ linked-list nodes singly-linked-list

我输入了在单向链表末尾添加节点的函数。 但这是行不通的。

当列表为空时(根据条件 head=NULL),我尝试使用 if else 来显示第一个节点。它似乎以某种方式起作用。

void insert(int x)
 {
    node* temp=new node;
    node* n=head;
    temp->data=x;
    temp->next=NULL;

    while(n!=NULL)
    {
        n=n->next;
    }
    n->next=temp;
}

程序显示段错误。

最佳答案

这只是将您的新节点分配给局部变量 n。它不会改变您列表中的任何内容:

n=temp; 

一个有效的方法是这样的:

void insert(int x)
{
    node** pp = &head;
    while (*pp)
        pp = &(*pp)->next;

    *pp = new node;
    (*pp)->data = x;
    (*pp)->next = nullptr;
}

这只是使用指向指针的指针列表中遍历指针。找到终止指针(如果列表为空,则可能是 head,如果不明显,head 值为 nullptr) ,新节点被分配并卡在原地。这也解决了您原始帖子中的一个问题(将第一个节点卡在一个空列表上,head 为空)。

关于c++ - 我尝试键入一个函数以在单向链表的末尾添加一个节点,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56765540/

相关文章:

c++ - C++中如何从txt文件中获取数据

java - 比较两个链表中的内容

java - 如何从链表中删除节点

c++ - 从给定的链表在 C++ 中创建反向链表

c++ - 如何使用qmake和mingw构建示例cppkafka?

C++ - 所有隐式转换的编译错误

c++ - 段错误 : 11 when trying to sort linked list by odds and evens

c - 从具有特定值的链表中删除节点

javascript - Radial Reingold Tilford Tree 删除根节点

c++ - 将 wrap 与 gcc 的 '-u' 标志一起使用