2-6 两个有序链表序列的合并 作者 陈越 单位 浙江大学
时间: 2024-06-12 19:09:07 浏览: 116
题目要求实现一个函数,将两个有序链表合并为一个非递减的整数序列。可以使用原地合并的方法来实现。
具体步骤如下:
1. 创建一个新的链表,用来存储合并后的结果。
2. 初始化三个指针,分别指向两个链表和结果链表的当前节点。
3. 比较两个链表的当前节点的值,将较小的值添加到结果链表,并将指向较小值的指针后移一位。
4. 重复步骤3,直到其中一个链表遍历完。
5. 将剩余的链表中的元素添加到结果链表的末尾。
6. 返回结果链表。
代码示例:
```
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode* dummy = (struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* cur = dummy;
while(l1 != NULL && l2 != NULL) {
if(l1->val <= l2->val) {
cur->next = l1;
l1 = l1->next;
} else {
cur->next = l2;
l2 = l2->next;
}
cur = cur->next;
}
cur->next = l1 == NULL ? l2 : l1;
return dummy->next;
}
```
阅读全文