c++合并两个有序链表为一个有序链表
时间: 2024-09-22 12:01:12 浏览: 40
在C++中,合并两个已排序的链表并创建一个新的有序链表,通常可以使用递归或迭代的方式来完成。这里我将描述一种常见的迭代方法:
```cpp
// 定义节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 创建头节点作为结果,初始化为NULL
ListNode* head = nullptr;
// 当其中一个链表为空时,直接返回另一个链表
if (!l1) return l2;
if (!l2) return l1;
// 初始化指针,比较当前两个链表的值
ListNode* current = head; // 当前指向新链表的第一个位置
while (l1 && l2) {
// 如果l1的值小于l2,将l1的节点添加到新链表
if (l1->val < l2->val) {
current->next = l1;
l1 = l1->next;
}
// 否则,将l2的节点添加到新链表
else {
current->next = l2;
l2 = l2->next;
}
// 移动current指针
current = current->next;
}
// 将剩余未遍历完的链表添加到新链表的末尾
if (l1) current->next = l1;
else current->next = l2;
// 返回新的有序链表的头节点
return head;
}
```
阅读全文