写一个C语言函数功能如下:本题要求写出输出单链表所有元素的子函数。 该程序实现将两个单链表归并为一个按元素值递减次序排列的单链表,并利用原来两个单链表的结点存放归并后的单链表。
时间: 2023-05-24 15:03:03 浏览: 113
A:
```c
struct ListNode {
int val;
struct ListNode *next;
};
void mergeSortedList(struct ListNode* l1, struct ListNode* l2, struct ListNode* mergedList) {
struct ListNode* p1 = l1;
struct ListNode* p2 = l2;
struct ListNode* pMerged = mergedList;
while (p1 && p2) {
if (p1->val >= p2->val) {
pMerged->next = p1;
p1 = p1->next;
} else {
pMerged->next = p2;
p2 = p2->next;
}
pMerged = pMerged->next;
}
if (p1) {
pMerged->next = p1;
} else {
pMerged->next = p2;
}
mergedList = mergedList->next;
struct ListNode* prev = NULL;
while (mergedList) {
struct ListNode* next = mergedList->next;
mergedList->next = prev;
prev = mergedList;
mergedList = next;
}
}
```
大体思路:用三个指针分别指向两个单链表和归并后的链表的头结点,然后根据节点值的大小比较依次把两个链表中的节点拼接到归并后的链表中,最后对归并后的链表进行翻转即可。
注意需要考虑空链表的情况。
阅读全文