用c++实现两个循环单链表的合并
时间: 2024-09-26 19:11:48 浏览: 50
在C++中,我们可以使用迭代或递归的方式来合并两个循环单链表。这里提供一种基于迭代的方法:
首先,我们需要定义链表节点结构体,并包含指向下一个节点的指针:
```cpp
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
```
然后可以编写一个函数来合并两个循环链表:
```cpp
ListNode* mergeTwoLists(ListNode* head1, ListNode* head2) {
// 创建一个新的头节点
ListNode dummy(0);
ListNode* current = &dummy; // 当前指针
while (head1 && head2) { // 只要两个链表非空
if (head1->val <= head2->val) {
current->next = head1;
head1 = head1->next;
} else {
current->next = head2;
head2 = head2->next;
}
current = current->next; // 移动当前指针
}
// 如果其中一个链表还有剩余元素,追加到新链表末尾
if (head1)
current->next = head1;
else
current->next = head2;
// 返回新链表的头节点
return dummy.next;
}
```
这个函数的工作原理是遍历两个链表,每次比较当前节点的值,将较小的那个添加到结果链表并移动相应指针。最后返回新链表的头节点。
阅读全文