c语言请编写函数将两个链表表示的递增函数整数序列合并为一个递增的整数序列,请直接使用原序列中的结点
时间: 2024-12-20 12:31:44 浏览: 4
在C语言中,你可以编写一个函数`mergeSortedLists`来合并两个递增的链表。我们将定义一个辅助函数`compareNodes`用于比较两个节点的值,然后通过迭代或者递归的方式来合并它们。这里是一个基本的实现:
首先,定义链表节点结构:
```c
typedef struct Node {
int value;
struct Node* next;
} ListNode;
```
接着,编写辅助函数`compareNodes`:
```c
int compareNodes(const ListNode* node1, const ListNode* node2) {
return node1->value < node2->value ? -1 : (node1->value > node2->value ? 1 : 0);
}
```
合并函数`mergeSortedLists`:
```c
ListNode* mergeSortedLists(ListNode* list1, ListNode* list2) {
if (list1 == NULL) return list2;
if (list2 == NULL) return list1;
if (compareNodes(list1, list2) <= 0) { // 如果list1较小或相等
list1->next = mergeSortedLists(list1->next, list2);
return list1;
} else { // 如果list2较小
list2->next = mergeSortedLists(list1, list2->next);
return list2;
}
}
```
在`main`函数中,你可以先分别初始化两个递增的链表,然后调用`mergeSortedLists`:
```c
int main() {
// 初始化第一个链表
ListNode* list1 = createLinkedList(); // 创建递增链表1
// ...
// 初始化第二个链表
ListNode* list2 = createLinkedList(); // 创建递增链表2
// ...
// 合并链表
ListNode* mergedList = mergeSortedLists(list1, list2);
// 验证并打印合并后的链表
printList(mergedList);
return 0;
}
```
这里假设`createLinkedList`函数用于生成递增链表,`printList`函数用于打印链表。需要注意的是,如果你的输入链表有可能是空的,以上代码需要添加适当的边界检查。
阅读全文