把两个带头结点的有序单链表A,B,合并成为有序的单链表C,使用C语言,给出代码
时间: 2024-12-13 20:19:19 浏览: 11
在C语言中,我们可以使用递归的方式来合并两个有序的单链表。以下是合并过程的伪代码以及一个简单的示例:
```c
// 定义链表节点结构体
typedef struct ListNode {
int val;
struct ListNode *next;
} ListNode;
// 合并两个有序链表函数
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
// 创建新的头结点
ListNode* head = NULL;
// 如果l1为空,直接返回l2
if (l1 == NULL) return l2;
// 如果l2为空,直接返回l1
if (l2 == NULL) return l1;
// 比较当前节点值,将较小的节点添加到新链表并更新指针
if (l1->val < l2->val) {
head = l1;
l1 = l1->next;
} else {
head = l2;
l2 = l2->next;
}
// 递归处理剩余部分
head->next = mergeTwoLists(l1, l2);
return head;
}
```
这段代码首先检查两个链表是否为空,然后比较每个链表的头节点值,选择较小的一个作为新链表的一部分,并递归地合并剩余的部分。最后返回合并后的链表头。
阅读全文