合并两个有序链表c++
时间: 2023-07-04 12:28:19 浏览: 71
c++ 如何合并两个有序链表
可以使用递归或迭代的方式实现合并两个有序链表,以下是迭代的实现方式:
```c++
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (!l1) return l2;
if (!l2) return l1;
ListNode* dummy = new ListNode(0); // 创建虚拟头结点
ListNode* cur = dummy;
while (l1 && l2) { // 遍历两个链表
if (l1->val <= l2->val) {
cur->next = l1;
l1 = l1->next;
} else {
cur->next = l2;
l2 = l2->next;
}
cur = cur->next;
}
cur->next = l1 ? l1 : l2; // 将剩余的链表接到结果链表的尾部
return dummy->next; // 返回真实头结点
}
```
其中,虚拟头结点是为了方便链表的操作而引入的,它的值不重要,只是为了让代码更简洁。
阅读全文