合并两个有序链表C++代码
时间: 2024-09-19 20:17:28 浏览: 82
合并两个有序链表是常见的链表操作,通常使用迭代或递归的方式实现。以下是使用C++的一种简单迭代方法:
```cpp
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 如果其中一个链表为空,直接返回另一个
if (!l1) return l2;
if (!l2) return l1;
// 定义一个新的头节点,并初始化为第一个非空链表的头
ListNode* head = (l1->val <= l2->val) ? l1 : l2;
ListNode* tail = head;
// 遍历两个链表,不断比较并选择较小的节点添加到新链表
while (l1 && l2) {
if (l1->val <= l2->val) {
tail->next = l1;
l1 = l1->next;
} else {
tail->next = l2;
l2 = l2->next;
}
tail = tail->next;
}
// 将剩余的链表连接到结果链表的末尾,如果还有未遍历完的链表
if (l1) tail->next = l1; // 将l1剩余部分连接
else tail->next = l2; // 或者将l2剩余部分连接
return head;
}
```
阅读全文