gpt4 book ai didi

c++ - 为什么该程序无法按排序顺序合并2个链表?

转载 作者:行者123 更新时间:2023-12-01 14:57:05 26 4
gpt4 key购买 nike

合并两个排序的链表,并将其作为新的排序表返回。应通过将前两个列表的节点拼接在一起来创建新列表。
例:

Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* temp = l1;
while(temp->next) {
temp = temp->next;
}
temp->next = l2;

ListNode* a = l1;
ListNode* b;
while(a) {
b = a->next->next;
if (a->val >= a->next->val) {
a->next->next = a;
a->next = b;
}
a=a->next;
}
return l1;
}
};
我无法弄清楚这个错误。
Line 27: Char 21: runtime error: member access within null pointer of type 'ListNode' (solution.cpp)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior prog_joined.cpp:36:21

最佳答案

在while循环中,您始终假定a->next不为null,因为您调用了a->next->next。但是,当a->next指向列表中的最后一个元素时,a将为null。
此外,您似乎正在尝试实现冒泡排序,但这需要列表的多次迭代才能正常工作。输入的10->20->30, 1->2->3无法正确排序。

关于c++ - 为什么该程序无法按排序顺序合并2个链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63599794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com