c++ 将两个递增的链表合并成为一个递增的有序链表。
时间: 2024-10-18 19:19:17 浏览: 27
在C++中,将两个递增的链表合并成一个单链表通常会采用迭代或递归的方式。这里提供一种迭代的解决方案:
```cpp
// 定义链表节点结构体
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(nullptr) {}
};
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 创建一个新的头节点
ListNode* head = nullptr;
// 使用临时指针跟踪当前链表的位置
ListNode* current = head;
// 当任意一个链表还有元素时
while (l1 != nullptr && l2 != nullptr) {
// 如果第一个链表的元素小于第二个链表的元素,添加第一个链表的元素到结果链表
if (l1->val < l2->val) {
current->next = l1;
l1 = l1->next;
}
// 否则添加第二个链表的元素
else {
current->next = l2;
l2 = l2->next;
}
// 移动到下一个位置
current = current->next;
}
// 如果其中一个链表还有剩余元素,直接将其添加到结果链表尾部
if (l1 != nullptr) {
current->next = l1;
} else {
current->next = l2;
}
return head; // 返回新链表的头节点
}
```
在这个函数中,我们遍历两个链表,比较每个节点的值,并按顺序连接它们。最后返回合并后的链表头部。
阅读全文