设有两个链式线性表la,lb,表中数据递增排序,现将两张链式线性表合并,合并后,线性表也递增有序C语言过程
时间: 2024-09-22 07:01:23 浏览: 33
在C语言中,合并两个升序排列的链表可以采用迭代或递归的方式来实现。这里我会给你一个基本的迭代方法的示例:
```c
// 定义链表节点结构体
typedef struct ListNode {
int val;
struct ListNode* next;
} ListNode;
// 合并两个链表函数
ListNode* mergeTwoLists(ListNode* la, ListNode* lb) {
if (la == NULL) return lb; // 如果la为空,直接返回lb
if (lb == NULL) return la; // 如果lb为空,直接返回la
// 创建一个新的头节点,并初始化指针
ListNode* head = NULL;
ListNode* current = head;
// 比较两个链表的头元素,选择较小的那个添加到新链表中
while (la && lb) {
if (la->val <= lb->val) {
current->next = la;
la = la->next;
} else {
current->next = lb;
lb = lb->next;
}
current = current->next;
}
// 将剩余未遍历完的链表连接到新链表的尾部
if (la != NULL) current->next = la;
else current->next = lb;
return head;
}
```
这个函数会合并两个输入链表`la`和`lb`,并保持结果链表的升序。当处理完其中一个链表时,会将另一个链表剩下的部分接上去。
阅读全文