c语言两个有序链表并为一个有序链表
时间: 2024-10-18 20:12:25 浏览: 21
如何将两个有序链表并为一个有序链表
在C语言中,将两个已排序的链表合并成一个新的有序链表通常采用归并排序的思想。这个过程可以分为以下几个步骤:
1. **创建一个新的头节点**:首先,创建一个新的空链表,这将是合并后的结果。
2. **遍历链表**:对于两个输入链表,同时从头部开始遍历。选择当前节点值较小的那个,将其添加到新链表中,并移动相应的指针到下一个节点。
3. **继续比较直到结束**:当其中一个链表遍历完时,将另一个链表剩余的部分直接添加到新链表的末尾。
4. **连接两个链表的剩余部分**:如果两个链表都不为空并且还有剩余元素,则将第一个链表剩余部分连接到新链表的末尾。
以下是简单的伪代码描述:
```c
Node* mergeSortedLists(Node* list1, Node* list2) {
Node* head = NULL; // 新链表头
if (list1 == NULL) return list2;
else if (list2 == NULL) return list1;
if (list1->data <= list2->data) {
head = list1;
head->next = mergeSortedLists(list1->next, list2);
} else {
head = list2;
head->next = mergeSortedLists(list1, list2->next);
}
return head;
}
```
在这个过程中,`Node`是一个结构体,包含`data`存储节点值和`next`指向下一个节点的指针。
阅读全文