用C++编写一个程序,把两个带头节点的单链表L1和L2合并为一个单链表,把L2接到L1的后面
时间: 2024-10-10 13:10:19 浏览: 41
链表_链表_用链表将两个数组升序合并到另一个数组_
在C++中,你可以通过创建一个新的节点并逐个链接原有的链表节点来合并两个单链表。这里是一个简单的示例代码:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int val; // 节点值
ListNode* next; // 指向下一个节点的指针
ListNode(int x) : val(x), next(NULL) {} // 构造函数
};
// 合并两个链表
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (!l1) return l2; // 如果l1为空,直接返回l2
if (!l2) return l1; // 如果l2为空,直接返回l1
// 将l2的节点添加到l1的后面
ListNode* new_head = l1;
while (l2) {
new_head->next = l2; // 将l2的头节点接到新链表尾部
new_head = new_head->next; // 移动new_head到下个位置
l2 = l2->next; // 移动l2到下一个节点
}
new_head->next = nullptr; // 结束合并后,设置新的尾部为NULL
return l1;
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp) {
std::cout << temp->val << " -> ";
temp = temp->next;
}
std::cout << "nullptr" << std::endl;
}
int main() {
// 创建测试链表(这里只做演示,实际应用需自行填充)
ListNode* l1 = new ListNode(1);
l1->next = new ListNode(2);
l1->next->next = new ListNode(4);
ListNode* l2 = new ListNode(3);
l2->next = new ListNode(5);
// 合并链表
ListNode* merged_list = mergeTwoLists(l1, l2);
// 打印合并后的链表
printList(merged_list);
return 0;
}
```
当你运行这个程序时,它会合并`l1`和`l2`两个链表,并将`l2`接到`l1`之后。记得删除示例代码中的临时链表节点,以防止内存泄漏。
阅读全文