我输入了在单向链表末尾添加节点的函数。 但这是行不通的。
当列表为空时(根据条件 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/