c++ 将两个单链表合并
时间: 2024-09-28 08:07:45 浏览: 69
在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 = new ListNode(0);
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; // 更新tail指向下一个位置
}
// 如果有剩余节点未遍历,将其追加到新链表末尾
if (l1) tail->next = l1;
if (l2) tail->next = l2;
return head->next; // 返回新的链表头结点
}
```
这个函数接收两个单链表的头指针作为输入,并通过比较每个节点的值来合并它们。
阅读全文