c++单链表合并
时间: 2023-06-29 13:14:56 浏览: 58
以下是将两个单链表合并成一个单链表的C++代码:
```c++
#include <iostream>
using namespace std;
// 定义单链表结构体
struct Node {
int val;
Node* next;
Node(int x) : val(x), next(NULL) {}
};
// 将两个单链表合并成一个单链表
Node* merge_list(Node* l1, Node* l2) {
Node* head = new Node(-1); // 新链表的头结点
Node* p = head; // 新链表的当前节点
while (l1 != NULL && l2 != NULL) {
if (l1->val < l2->val) {
p->next = l1;
l1 = l1->next;
} else {
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
if (l1 != NULL) {
p->next = l1;
}
if (l2 != NULL) {
p->next = l2;
}
return head->next;
}
// 输出单链表
void print_list(Node* head) {
Node* p = head;
while (p != NULL) {
cout << p->val << " ";
p = p->next;
}
}
int main() {
Node* l1 = new Node(1);
l1->next = new Node(3);
l1->next->next = new Node(5);
Node* l2 = new Node(2);
l2->next = new Node(4);
l2->next->next = new Node(6);
cout << "合并前的链表1:" << endl;
print_list(l1);
cout << endl;
cout << "合并前的链表2:" << endl;
print_list(l2);
cout << endl;
Node* merged_list = merge_list(l1, l2);
cout << "合并后的链表:" << endl;
print_list(merged_list);
cout << endl;
return 0;
}
```
在 `merge_list()` 函数中,首先创建一个新链表的头结点,并用 `p` 指向该节点。然后比较两个链表 `l1` 和 `l2` 中当前节点的值,将较小的节点加入新链表,并将指针移动到下一个节点。直到其中一个链表为空,将剩余的节点加入新链表中。最后返回新链表的头节点。
在 `main()` 函数中,先创建两个单链表 `l1` 和 `l2`,输出合并前的两个链表,调用 `merge_list()` 函数将两个链表合并成一个链表,最后输出合并后的链表。
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)