新建两个链表AList和BList并完成如下操作: AList : 7 6 5 2 1 BList : 9 7 5 3 2 (1)将两个链表按从高到低的顺序合并为一个链表 用c++完整表示出来
时间: 2024-10-15 21:25:37 浏览: 22
在C++中,你可以使用递归的方式来合并两个已排序的链表AList和BList,按照从高到低的顺序。首先,我们创建一个新的节点结构体,并定义一些辅助函数:
```cpp
#include <iostream>
using namespace std;
// 定义链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
// 合并两个已排序链表
ListNode* mergeTwoLists(ListNode* A, ListNode* B) {
// 创建新链表头结点
ListNode* result = (A && B) ? new ListNode(-1) : (A ? A : B);
if (!A && !B) return result; // 如果两者都为空,直接返回
// 递归遍历两个链表
while (A && B) {
if (A->val > B->val) {
result->next = A;
A = A->next;
} else {
result->next = B;
B = B->next;
}
result = result->next;
}
// 将剩余部分连接到结果链表
result->next = (A ? A : B);
return result;
}
// 打印链表
void printList(ListNode* head) {
while (head) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
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);
// 打印合并后的链表
printList(mergedList);
// 释放内存
delete mergedList;
return 0;
}
```
运行这段代码后,你会得到合并后的链表:`9 7 7 6 5 5 3 2 2 1`,这是按照从高到低的顺序排列的结果。
阅读全文