-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