首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么此程序不能按排序顺序合并2个链表?

为什么此程序不能按排序顺序合并2个链表?
EN

Stack Overflow用户
提问于 2020-08-26 22:26:00
回答 1查看 55关注 0票数 0

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

示例:

代码语言:javascript
复制
Input: 1->2->4, 1->3->4
Output: 1->1->2->3->4->4
代码语言:javascript
复制
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;
  }
};

我不能找出这个错误。

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-26 22:30:27

在while循环中,因为调用了a->next->next,所以总是假定a->next不为null。但是,当a指向列表中的最后一个元素时,a->next将为null。

此外,您似乎正在尝试实现冒泡排序,但这需要列表的多次迭代才能正常工作。输入10->20->30, 1->2->3将无法正确排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63599794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档