-1
我在這個問題一個疑問:link我下面這個方案:合併兩個有序鏈表
if((headA==NULL)&&(headB==NULL)
return NULL;
if((headA!=NULL)&&(headB==NULL))
return headA;
if((headA == NULL)&&(headB!=NULL))
return headB;
if(headA->data < headB->data)
headA->next = MergeLists(headA->next, headB);
else if(headA->data > headB->data)
{
Node* temp = headB;
headB = headB->next;
temp->next = headA;
headA = temp;
headA->next = MergeLists(headA->next, headB);
}
return headA;
我得到的是,當headA->data < headB->data
那麼我們只需將headA指針移動到下一個節點。但是當headA->data > headB->data
時,我們創建一個臨時指針,將它指向headA指向的位置,並將headB移動到下一個節點。我不明白的是:
如何將預先排序獲取鏈接到這個新的臨時節點的節點,我已經創造出來的?你能指出我的代碼
此外,headA指針指向第二個條件後?它指向新節點嗎?
如果你通過與你的調試器單步執行代碼,它會顯示:
這也可以不用遞歸方法來實現你到底發生了什麼事情,而且他們看到事情發生時的價值。 – NathanOliver
如果列表具有共同的數據值,則這不起作用。嘗試將列表與同一列表的副本合併。 – pat
您在代碼中至少缺少一個''''''。 – crashmstr