/*
有序表的合并---用链表实现
*/
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef int ElemType;
typedef struct Lnode{
ElemType data;
struct Lnode * next;
}LNode, * LinkList;
void CreateList_R(LinkList * L){
int len;
printf("请输入要创建的链表节点个数:");
scanf("%d", &len);
*L = (LinkList)malloc(sizeof(LNode) * len);
int i;
int val;
LinkList r;
r = *L;
for(i = 0; i < len; i++){
printf("请输入第%d个节点存入的值:\n", i + 1);
scanf("%d", &val);
LinkList s = (LinkList)malloc(sizeof(LNode));
s->data = val;
s->next = NULL;
r->next = s;
r = s;
}
}
void traverse_list(LinkList L){
LinkList p = L->next;
while(p){
printf("%d ", p->data);
p = p->next;
}
}
/*
有序表合并---用链表实现
*/
LinkList MergeList_L(LinkList La, LinkList Lb){
LinkList Lc;
LinkList pa = La->next;
LinkList pb = Lb->next;
Lc = La;
LinkList pc = La;
while(pa && pb){
if(pa->data <= pb->data){
pc->next = pa;
pc = pa;
pa = pa->next;
}else{
pc->next = pb;
pc = pb;
pb = pb->next;
}
}
pc->next = pa?pa:pb;
free(Lb);
return Lc;
}
int main(){
LinkList La;
LinkList Lb;
LinkList Lc;
CreateList_R(&La);
CreateList_R(&Lb);
Lc = MergeList_L(La, Lb);
traverse_list(Lc);
return 0;
}
有序表的合并-用链表操作
转载
我亦无他,惟手熟尔
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
【LeetCode】有序链表合并
【LeetCode】经典题目之合并有序链表
leetcode 链表 头结点 python -
合并2个有序链表
合并2个有序链表(附带leetcode测试地址)源码package suanfa.lianbiao;// 测试链接:https://l
链表 leetcode 数据结构 有序链表 -
合并K个有序链表
合并K个有序链表(附带leetcode测试地址)源码package suanfa.lianbiao;import java.util.Priori
链表 leetcode 数据结构 有序链表 java -
合并两个有序链表【链表】
时间复杂度:空间复杂度:
链表 python 数据结构 空间复杂度 时间复杂度