c语言代码。设有两个链式线性表la,lb,表中数据递增排序,现将两张链式线性表合并,合并后,线性表也递增有序
时间: 2024-09-22 10:00:22 浏览: 36
数据结构实验报告1-线性表-两个有序表的归并-实验内容及要求.docx
在C语言中,合并两个已排序的链表可以使用迭代或递归的方式。这里提供一个简单的迭代方法示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点结构体
typedef struct Node {
int data;
struct Node* next;
} Node;
// 合并两个已排序链表
Node* mergeSortedLists(Node* la, Node* lb) {
if (la == NULL) return lb; // 如果la为空,则返回lb
if (lb == NULL) return la; // 如果lb为空,则返回la
// 比较当前节点的数据
if (la->data <= lb->data) {
la->next = mergeSortedLists(la->next, lb); // 保留la的数据,继续合并剩余部分
return la;
} else {
lb->next = mergeSortedLists(la, lb->next); // 保留lb的数据,继续合并剩余部分
return lb;
}
}
// 辅助函数打印链表
void printList(Node* head) {
while (head != NULL) {
printf("%d -> ", head->data);
head = head->next;
}
printf("NULL\n");
}
int main() {
// 初始化你的两个链表la和lb...
Node* la = ...;
Node* lb = ...;
// 合并链表
Node* mergedHead = mergeSortedLists(la, lb);
// 打印合并后的链表
printList(mergedHead);
return 0;
}
```
阅读全文