c语言合并h1和h2两个单链表
时间: 2024-10-25 16:15:41 浏览: 15
在C语言中,合并两个已排序的单链表(例如H1和H2,都是按升序排列的整数节点),可以创建一个新的链表,其中节点顺序是从H1开始,接着是H2的所有元素。这通常需要遍历两个链表,并将较小的节点添加到新链表中。这里是一个简单的示例:
```c
struct ListNode {
int val;
struct ListNode *next;
};
struct ListNode* mergeTwoLists(struct ListNode* h1, struct ListNode* h2) {
if (h1 == NULL) return h2;
if (h2 == NULL) return h1;
// 创建一个新的头节点并初始化为h1
struct ListNode* dummyHead = (struct ListNode*)malloc(sizeof(struct ListNode));
dummyHead->val = h1->val;
dummyHead->next = NULL;
// 指向当前待插入节点
struct ListNode* cur = dummyHead;
// 遍历两个链表
while (h1 && h2) {
if (h1->val <= h2->val) { // 将较小的节点添加到新链表
cur->next = h1;
h1 = h1->next;
} else {
cur->next = h2;
h2 = h2->next;
}
cur = cur->next;
}
// 如果其中一个链表还有剩余,将其添加到最后
if (h1) cur->next = h1;
else cur->next = h2;
return dummyHead->next; // 返回合并后的链表头
}
```
阅读全文