簡體   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