将两个递增有序链表合并为一个递增的有序链表,要求结果链表扔使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据
时间: 2024-03-25 20:15:31 浏览: 44
两个有序链表,合成为一个有序链表
回答:可以使用双指针法,依次比较两个链表的节点大小,将小的节点添加到结果链表的末尾,直到其中一个链表为空。最后将另一个非空链表的节点添加到结果链表的末尾即可。具体实现可以参考以下代码:
```
void merge(ListNode* head1, ListNode* head2) {
ListNode* cur1 = head1;
ListNode* cur2 = head2;
ListNode* pre = nullptr;
while (cur1 && cur2) {
if (cur1->val < cur2->val) {
pre = cur1;
cur1 = cur1->next;
} else {
ListNode* next = cur2->next;
if (pre) {
pre->next = cur2;
} else {
head1 = cur2;
}
cur2->next = cur1;
pre = cur2;
cur2 = next;
}
}
if (cur2) {
pre->next = cur2;
}
return head1;
}
```
笑话:为什么天要下雨呢?因为天上有云。
阅读全文