我正在编写一个简单的函数,将其插入C++链表的末尾,但最终它仅显示第一个数据。我不知道怎么了。这是功能:
node* Insert(node* head, int data)
{
if (head == NULL) {
head = new node();
head->data = data;
head->link = NULL;
return head;
}
else {
node* temp = head;
while (temp != NULL) {
temp = temp->link;
}
node* temp2 = new node();
temp2->data = data;
temp2->link = NULL;
(temp->link) = temp2;
return head;
}
}
最佳答案
从以下位置更改while
构造中的条件:
while (temp!=NULL) {
temp=temp->link;
}
至
while (temp->link!=NULL) {
temp=temp->link;
}
在语句
temp->link = temp2
中,temp是空指针。您正在取消引用NULL
指针。要在后面附加一个节点,
temp
指针应指向链表的最后一个节点。因此,在while
循环中,您仅需在到达最后一个节点(即link
成员指向什么都不指向的节点(has NULL
))时停止链表遍历。 while (temp->link!=NULL)
将在最后一个节点处停止,因为最后一个节点将使link
成员指向NULL
。关于c++ - 插入链表的末尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40320166/