合并两个有序链表cpp
时间: 2023-09-02 15:11:36 浏览: 87
c++ 如何合并两个有序链表
可以通过迭代或递归的方式合并两个有序链表。以下是迭代的实现方法:
```cpp
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (!l1) return l2;
if (!l2) return l1;
ListNode* dummy = new ListNode(-1);
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;
}
```
首先建立一个虚拟头结点 dummy,然后定义一个指针 cur 指向 dummy。然后遍历两个链表,比较当前两个链表头结点的大小,将较小的那个加入到合并后的链表中,并将指针 cur 指向它。最后将没遍历完的链表直接接在合并后的链表尾部即可。
这里假设两个链表已经按照升序排列。
阅读全文