将两个递增的有序链表合并为一个C语言
时间: 2023-10-18 15:18:22 浏览: 101
下面是一个C语言实现将两个递增的有序链表合并为一个的函数:
```c
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
// 创建哑节点,方便操作
struct ListNode dummy;
dummy.val = 0;
dummy.next = NULL;
// 定义指针p指向哑节点
struct ListNode *p = &dummy;
// 两个链表都不为空时,比较两个链表当前节点的值,将较小值插入到新链表中
while(l1 != NULL && l2 != NULL){
if(l1->val < l2->val){
p->next = l1;
l1 = l1->next;
}else{
p->next = l2;
l2 = l2->next;
}
p = p->next;
}
// 如果l1链表还有剩余,则将剩余部分插入到新链表中
if(l1 != NULL){
p->next = l1;
}
// 如果l2链表还有剩余,则将剩余部分插入到新链表中
if(l2 != NULL){
p->next = l2;
}
return dummy.next;
}
```
该函数先创建一个哑节点,方便操作,定义指针p指向哑节点,然后比较两个链表当前节点的值,将较小值插入到新链表中。当其中一个链表为空时,将另一个链表的剩余部分插入到新链表中。最后返回新链表的头节点即可。
阅读全文