两个链表合并成一个链表头指针输出C语言输出
时间: 2024-09-24 17:18:14 浏览: 35
在C语言中,合并两个已排序的链表可以采用迭代或递归的方式来实现。这里提供一个简单的迭代方法作为示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct ListNode {
int val; // 节点值
struct ListNode *next; // 指向下一个节点的指针
} ListNode;
// 合并两个有序链表函数
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
if (!l1) return l2; // 如果l1为空,直接返回l2
if (!l2) return l1; // 如果l2为空,直接返回l1
ListNode* merged = NULL; // 结果链表头指针
if (l1->val <= l2->val) { // 判断当前l1的值是否小于等于l2的值
merged = l1;
merged->next = mergeTwoLists(l1->next, l2);
} else {
merged = l2;
merged->next = mergeTwoLists(l1, l2->next);
}
return merged;
}
// 打印链表函数
void printList(ListNode* node) {
while (node) {
printf("%d ", node->val);
node = node->next;
}
printf("\n");
}
int main() {
// 创建两个示例链表
ListNode* list1 = (ListNode*)malloc(sizeof(ListNode));
list1->val = 1;
list1->next = (ListNode*)malloc(sizeof(ListNode));
list1->next->val = 2;
// ...继续添加更多的节点
ListNode* list2 = (ListNode*)malloc(sizeof(ListNode));
list2->val = 4;
list2->next = (ListNode*)malloc(sizeof(ListNode));
list2->next->val = 5;
// ...继续添加更多的节点
// 合并链表
ListNode* merged = mergeTwoLists(list1, list2);
// 输出结果链表
printf("Merged list: ");
printList(merged);
return 0;
}
阅读全文