用c语言合并2个单链表
时间: 2024-05-02 13:18:18 浏览: 82
以下是一个示例程序,用于合并两个单链表:
```c
#include<stdio.h>
#include<stdlib.h>
struct Node {
int data;
struct Node* next;
};
typedef struct Node node;
node* createNode(int data) {
node* newNode = (node*)malloc(sizeof(node));
newNode->data = data;
newNode->next = NULL;
return newNode;
}
node* mergeLists(node* list1, node* list2) {
node* result = NULL;
if (list1 == NULL) {
return list2;
}
else if (list2 == NULL) {
return list1;
}
if (list1->data <= list2->data) {
result = list1;
result->next = mergeLists(list1->next, list2);
}
else {
result = list2;
result->next = mergeLists(list1, list2->next);
}
return result;
}
void printList(node* head) {
while (head != NULL) {
printf("%d ", head->data);
head = head->next;
}
}
int main() {
node* list1 = createNode(1);
list1->next = createNode(3);
list1->next->next = createNode(5);
list1->next->next->next = createNode(7);
node* list2 = createNode(2);
list2->next = createNode(4);
list2->next->next = createNode(6);
list2->next->next->next = createNode(8);
node* mergedList = mergeLists(list1, list2);
printList(mergedList);
return 0;
}
```
在这个程序中,我们首先定义了一个结构体`Node`,表示链表中的节点。然后,我们创建了一个`createNode`函数,用于创建一个新的节点。接下来,我们定义了一个`mergeLists`函数,该函数接受两个链表作为参数,并返回合并后的链表。该函数使用递归来合并两个链表。最后,我们定义了一个`printList`函数,该函数用于打印链表的元素。
在`main`函数中,我们首先创建两个链表`list1`和`list2`,然后调用`mergeLists`函数来合并这两个链表,并将结果存储在`mergedList`中。最后,我们调用`printList`函数来打印合并后的链表。
输出结果将是:1 2 3 4 5 6 7 8
阅读全文