我是靠谱客的博主 朴实枕头,这篇文章主要介绍2021-11-07 线性表的合并(单链表),现在分享给大家,希望可以做个参考。

【问题描述】将所有在单链表LB中但不在单链表LA中的数据元素插入到LA中(线性表的合并)

【输入形式】
【输出形式】
【样例输入】5 15 25 35 45 55 0   

                   3 15 25 33 12 0

【样例输出】5 15 25 35 45 55 3 33 12
【样例说明】LA表:5 15 25 35 45 55    ,LB表:  3 15 25 33 12,当输入数据元素值为0时链表结束。

【运行结果如下】

【代码如下】

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include<stdio.h> #include<stdlib.h> typedef int Status; typedef int ElemType; /*线性表的单链表存储结构 */ typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *LinkList; /*初始化链表*/ void InitList_L(LinkList &L) { LinkList p,pre; L = (LinkList)malloc(sizeof(LNode)); pre = L; //当前指针 while (true) { p = (LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); if (p->data == 0) //数据元素为0,结束循环 { free(p); //释放已生成的结点 break; } pre->next = p; p->next = NULL; pre = pre->next; //当前指针后移 } } /*归并*/ void MergeList_L(LinkList &La,LinkList &Lb) { LinkList pa,pb,q; pa = La; //当前指针 pb = Lb; while (pa->next != NULL){ while (pb->next != NULL){ if (pa->next->data == pb->next->data){ //数据元素相同,删除 q = (LinkList)malloc(sizeof(LNode)); q = pb->next; pb->next = q->next; free(q); } else{ pb = pb->next; //当前指针后移 } } pa = pa->next; pb = Lb; //重新指向头结点 } pa->next = Lb->next; //将Lb表合并到La表中 free(Lb); //释放Lb头结点 } /*输出链表数据*/ void OutputList_L(LinkList &L){ LinkList pre; pre = L; //当前指针 while (pre->next != NULL) { pre = pre->next; printf("%d ",pre->data); } printf("n"); } int main() { LinkList La,Lb; InitList_L(La); InitList_L(Lb); MergeList_L(La,Lb); //归并 OutputList_L(La); return 0; }

 

本文章仅供学习和参考!

欢迎交流~

最后

以上就是朴实枕头最近收集整理的关于2021-11-07 线性表的合并(单链表)的全部内容,更多相关2021-11-07内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部