c++ 尝试在链接列表末尾添加项时出现分段错误

ecbunoof  于 2022-11-19  发布在  其他
关注(0)|答案(1)|浏览(83)

当我尝试在链接列表的末尾添加一个项目时,它显示分段错误(核心转储)
下面是代码

LinkedList :: LinkedList()
{
    head = NULL;
}

void LinkedList :: InsertItem(int data)
{
    Node *new_node;
    new_node = new Node;
    new_node -> data = data;
    new_node -> next = NULL;

    new_node -> next = head;
    head = new_node;

    cout<<"Node Added"<<"\n";
}

void LinkedList :: Display()
{
     Node *curr;
     curr = head;

    while(curr != NULL)
    {
    cout<<curr->data<<"\t";
    curr = curr -> next;
    }
}

void LinkedList :: AddLast(int data)
{
     Node *new_node = new Node;
     new_node -> data = data;
     new_node -> next = NULL;

     Node *curr = head;
     while (curr != NULL)
     { 
    curr = curr -> next;
     }

     curr -> next = new_node;

}

当我运行这个程序时,它说
Segmentation fault (core dumped)
我正在尝试实现这个没有尾节点的链表。那么我应该怎么做呢?

ttcibm8c

ttcibm8c1#

AddLast方法中,迭代在curr == NULL时停止。

curr -> next = new_node;

您将得到一个segfault,因为这里curr为空。
若要修正此问题,请将您的版序变更为

while (curr->next != NULL)

这将确保迭代在最后一个节点停止,就像您需要的那样。

相关问题