用c++合并两个单链表
时间: 2024-09-27 22:05:57 浏览: 56
在 C++ 中,合并两个单链表通常需要创建一个新的链表节点,并将它们的元素连接起来。这里有一个基本的步骤描述:
1. 定义一个新的头结点 `ListNode` 类,包含数据域 `data` 和指向下一个节点的指针 `next`。
```cpp
struct ListNode {
int data;
ListNode* next;
};
```
2. 创建一个函数 `mergeTwoLists(ListNode** headA, ListNode** headB)` 来合并两个链表。该函数接受两个链表的头指针作为输入,返回合并后的链表头指针。如果其中一个链表为空,则直接返回另一个链表。
```cpp
ListNode* mergeTwoLists(ListNode* headA, ListNode* headB) {
if (!headA) return headB; // 如果A为空,B就是结果
if (!headB) return headA; // 同理,如果B为空,A就是结果
// 初始化一个临时变量作为当前节点,初始化为较小的链表头节点
ListNode* current = (headA->data <= headB->data) ? headA : headB;
// 当前链表头的下一个节点为另一个链表的头,直到某个链表结束
while (headA && headB) {
if (headA->data <= headB->data) {
current->next = headA;
headA = headA->next;
} else {
current->next = headB;
headB = headB->next;
}
current = current->next;
}
// 将最后一个遍历到的非空链表的剩余部分连接到新链表的尾部
if (headA) current->next = headA;
else current->next = headB;
return current;
}
```
阅读全文