新建两个链表AList和BList并完成如下操作: AList : 7 6 5 2 1 BList : 9 7 5 3 2 (1)将两个链表按从高到低的顺序合并为一个链表 用c++
时间: 2024-10-15 07:25:38 浏览: 18
探讨:将两个链表非降序合并为一个链表并依然有序的实现方法
在 C++ 中,你可以通过创建一个新的单向链表节点,并遍历两个输入链表 AList 和 BList 来实现这个操作。这里是一个步骤示例:
```cpp
#include <iostream>
using namespace std;
// 链表节点结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 合并链表函数
ListNode* mergeTwoLists(ListNode* A, ListNode* B) {
// 如果其中一个链表为空,直接返回另一个链表
if (!A) return B;
if (!B) return A;
// 定义新链表头结点
ListNode* result = (A->val > B->val) ? A : B;
ListNode* current = result;
// 比较当前节点值较大的链表节点
while (A && B) {
if (A->val > B->val) {
current->next = A;
A = A->next;
} else {
current->next = B;
B = B->next;
}
current = current->next;
}
// 将剩余未遍历完的链表连接到结果
if (A) current->next = A;
else current->next = B;
return result;
}
int main() {
// 创建两个链表
ListNode* AList = new ListNode(7);
AList->next = new ListNode(6);
AList->next->next = new ListNode(5);
AList->next->next->next = new ListNode(2);
AList->next->next->next->next = new ListNode(1);
ListNode* BList = new ListNode(9);
BList->next = new ListNode(7);
BList->next->next = new ListNode(5);
BList->next->next->next = new ListNode(3);
BList->next->next->next->next = new ListNode(2);
// 合并链表
ListNode* mergedList = mergeTwoLists(AList, BList);
// 打印合并后的链表(为了简化,这里仅打印节点值)
while (mergedList) {
cout << mergedList->val << " ";
mergedList = mergedList->next;
}
return 0;
}
```
运行这个程序,你会得到按从高到低顺序合并后的链表结果:9 7 7 6 5 5 3 2 2 1。
阅读全文