![](/img/trans.png)
[英]Runtime error in Linked List :member access within null pointer of type 'ListNode'
[英]runtime error: member access within null pointer of type 'ListNode' - Clone a linked list
我正在尝试以相反的顺序克隆链表。
ListNode* cloneList(ListNode* head) {
ListNode *prev = new ListNode(head->val);
head = head->next;
while (head != NULL)
{
ListNode *p = new ListNode(head->val, prev);
head = head->next;
prev = p;
}
return prev;
}
ListNode的定义如下:
struct ListNode
{
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
但我收到此运行时错误:成员访问类型为“ListNode”的 null 指针。
我在创建或初始化节点时犯了一些错误吗? 请解释。
克隆方法以相反的顺序返回新列表是不常见的,但是如果这是您的实际要求,那没关系。
如评论中所述,您显示的代码不考虑列表为空的可能性(即,当head
为nullptr
时),例如:
ListNode* cloneList(ListNode* head) {
if (!head) return nullptr; // <-- add this
...
}
如果head
不是nullptr
并且指向一个有效的ListNode
,并且该列表正确地以 null 终止,那么您的代码就可以正常工作。
但是,它可以简化一点,例如:
ListNode* cloneList(ListNode* head) {
ListNode *newHead = nullptr;
while (head) {
newHead = new ListNode(head->val, newHead);
head = head->next;
}
return newHead;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.