当我尝试在链接列表的末尾添加一个项目时,它显示分段错误(核心转储)
下面是代码
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)
我正在尝试实现这个没有尾节点的链表。那么我应该怎么做呢?
1条答案
按热度按时间ttcibm8c1#
在
AddLast
方法中,迭代在curr == NULL
时停止。您将得到一个segfault,因为这里
curr
为空。若要修正此问题,请将您的版序变更为
这将确保迭代在最后一个节点停止,就像您需要的那样。