[英]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.