我不明白温度是如何同时保持head1和head2的


Node* mergelist(Node* head1, 
Node* head2)
{
// Base cases
if (!head1)
return head2;
if (!head2)
return head1;

Node* temp = NULL;
if (head1->data < head2->data) 
{
temp = head1;
head1->next = mergelist(head1->next, 
head2);
}
else 
{
temp = head2;
head2->next = mergelist(head1, 
head2->next);
}
return temp;
}

temp未同时保持head1head2

head1head2

temp表示合并列表的头。只有两个候选:合并后的列表将从第一个列表的第一个节点开始,或者从第二个列表的第一个节点开始,以值最小的一个开始。这就是if条件检查的内容,所以我们要么进入if块,要么进入else块(不同时进入)。

一旦我们知道哪个节点将是合并列表的头(head1head2),我们应该从进一步的合并逻辑中排除该节点,并在没有节点的情况下继续合并。这是通过递归调用函数来实现的(不包含该节点)。

temp更好的名字应该是headOfMergedList

最新更新