两二个链表依次组合成一个新链表C语言
时间: 2024-02-02 16:03:39 浏览: 22
可以使用以下C语言代码将两个链表依次组合成一个新链表:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode *cur = head;
while(l1 && l2){
if(l1->val < l2->val){
cur->next = l1;
l1 = l1->next;
}else{
cur->next = l2;
l2 = l2->next;
}
cur = cur->next;
}
cur->next = l1 ? l1 : l2; return head->next;
}
```
其中,结构体`ListNode`表示链表节点,包含一个整数`val`和一个指向下一个节点的指针`next`。函数`mergeTwoLists`接受两个链表`l1`和`l2`作为参数,返回一个新链表。在函数中,我们首先创建一个头节点`head`,然后使用指针`cur`指向头节点。接着,我们使用循环遍历两个链表,将它们依次合并到新链表中。具体来说,我们比较两个链表当前节点的值,将较小的节点加入到新链表中,并将指针`cur`指向新链表的最后一个节点。最后,我们将剩余的节点加入到新链表的末尾,并返回新链表的头节点`head->next`。