c语言数据结构两个单链表合并排序代码
时间: 2024-10-14 20:05:12 浏览: 45
数据结构-C语言实现单链表-数据结构学习
在C语言中,合并并排序两个已排序的单链表可以分为几个步骤:
1. **合并操作**:
首先创建一个新的头节点,并初始化为NULL。然后遍历两个链表,每次比较当前节点的值,将较小的节点添加到新链表,并更新指向下一个节点。
```c
struct ListNode* mergeLists(struct ListNode* list1, struct ListNode* list2) {
struct ListNode *new_head = NULL, *temp1 = list1, *temp2 = list2;
if (list1 != NULL && list2 != NULL) {
if (list1->val < list2->val) {
new_head = list1;
temp1 = temp1->next;
} else {
new_head = list2;
temp2 = temp2->next;
}
} else if (list1 == NULL) {
return list2;
} else if (list2 == NULL) {
return list1;
}
while (temp1 != NULL && temp2 != NULL) {
if (temp1->val < temp2->val) {
new_head->next = temp1;
temp1 = temp1->next;
} else {
new_head->next = temp2;
temp2 = temp2->next;
}
new_head = new_head->next;
}
if (temp1 != NULL) {
new_head->next = temp1;
} else if (temp2 != NULL) {
new_head->next = temp2;
}
return new_head;
}
```
2. **排序操作**:
因为输入的链表已经排序了,所以这里不需要额外的排序过程。直接进行上述合并操作即可得到一个按升序排列的新链表。
阅读全文