繁体   English   中英

合并两个排序的链表时出现运行时错误

[英]Runtime error while merging two sorted linked list

我正在编写一个 c++ 代码来合并两个排序的链接列表。我正在使用两个指针方法。下面的代码出现运行时错误。我无法调试代码。

错误 - 您的提交因运行时错误而停止。 例如:除以零、数组索引超出范围、未捕获的异常。

   /**
   * Definition for singly-linked list.
   * struct ListNode {
   *     int val;
   *     ListNode *next;
   *     ListNode(int x) : val(x), next(NULL) {}
   * };
   */
    ListNode* Solution::mergeTwoLists(ListNode* A, ListNode* B) {

    ListNode* head1=new ListNode(-1);
    head1->next=A;
    ListNode* head2=new ListNode(-1);
    head2->next=B;

    ListNode* temp1=head1;
    ListNode* temp2=head2;

    while(temp1->next!=NULL || temp2->next!=NULL)
    {
        if(temp1->next->val <= temp2->next->oval)
        {
           // if(temp1->next==NULL) break;
           //else
            temp1=temp1->next;
        }
        else if(temp1->next->val > temp2->next->oval)
        {
            ListNode* temp=temp1->next;
            ListNode* t2=temp2->next->next;
            temp1->next=temp2->next;
            temp2->next=t2;
            temp1->next->next=temp;
            temp1=temp1->next;
        }
    }
    if(temp1->next==NULL)
    {
    temp1->next=temp2->next;
    temp2->next=NULL;
    }
    return head1->next;
}

这个条件:

while(temp1->next!=NULL || temp2->next!=NULL)

是不正确的,因为如果这些指针之一恰好是 NULL ,您将访问无效的NULL

相反,您需要执行以下操作:

while(temp1->next!=NULL && temp2->next!=NULL)

此外,您应该使用nullptr而不是NULL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM