将两个递增单链表合并为一个递增单链表,不另开辟空间。(单链表在程序中创建)c语言
时间: 2024-09-26 14:07:15 浏览: 9
在C语言中,将两个递增排序的单链表合并成一个新的递增排序链表,并且不使用额外的空间,可以采用迭代或递归的方式来实现。这里提供一种简单的迭代方法:
```c
typedef struct Node {
int data;
struct Node *next;
} Node;
Node* mergeSortedLists(Node* list1, Node* list2) {
// 定义一个临时头节点和指针
Node *mergedHead = NULL, *current = mergedHead;
// 指向当前列表的头部
Node *list1Ptr = list1, *list2Ptr = list2;
// 当任一列表非空时
while (list1Ptr != NULL && list2Ptr != NULL) {
if (list1Ptr->data <= list2Ptr->data) { // 列表1的数据较小
current->next = list1Ptr;
list1Ptr = list1Ptr->next;
} else { // 列表2的数据较小
current->next = list2Ptr;
list2Ptr = list2Ptr->next;
}
current = current->next; // 移动到下一个位置
}
// 如果其中一个列表未遍历完,则将剩余部分连接到结果链表
if (list1Ptr != NULL) {
current->next = list1Ptr;
} else {
current->next = list2Ptr;
}
return mergedHead; // 返回新的递增排序链表头
}
```