题意:
令L1 = (X1,X2,X3,X4…Xn), L2 = (y1,y2,y3,y4…ym);是两个线性表。采用带头节点的链表存储,设计一个算法合并L1,L2,结果放在线性表L3中,要求如下:
L3 = (X1,Y1,X2,Y2,X3,Y3,…XmYm,Xm+1,…Xn) 当m<= n
L3 = (X1,Y1,X2,Y2,X3,Y3,…XnYn,Yn+1,…Ym) 当n<= m
L3采用单链表存储。

单链表的存储结构:

typedef struct LinkList{int data;LinkList * next;}

分析:
这里是线性表的合并,如何合并呢?
这里有两种情况,分为:
1.破环原有链表
2.不破坏原有链表

这里采用不破坏原有链表情况。
不破坏原有链表是什么意思呢?
(复制过去)
现在有两个链表L1.L2。都带有头结点。但是,这里不能破坏他们,所以这里新建一个链表L3. 将L1和L2的数据都复制过去。
所以用这种方式就不会破坏它们。

思路:
1.定义两个指针各指向各链表。定义一个尾指针。生成一个头结点。
2.通过while循环,循环条件为p!=null&& q!=null。在循环体中,每次都要生成新节点。
3.将两个链表中的数据复制过去。
4.将多余部分也复制过去
5.尾指针置为空。

C代码实现:

  void Merge1(LinkList * L1,LinkList * L2,LinkList *&L3){LinkList *p =L1->next,*q = L2->next,*s,*t; //新节点和尾指针L3 = (LinkList *)malloc(sizeof(LinkList *));//L3头结点t = L3;while(p!=null && q!=null){s = (LinkList *)malloc(sizeof(LinkList ));s->data = p->data;r->next = p;p = p->next;//另一一个链表s = (LinkList *)malloc(sizeof(LinkList ));s->data = q->data;r->next = q;q = q->next;}if(q!=null)  p = q;while(p!=null){s = (LinkList *)malloc(sizeof(LinkList ));s->data = p->data;r->next = p;p = p->next;}r->next = null;   }

单链表-两个线性表的合并(不破坏原链表+尾插法)相关推荐

  1. 单链表-两个线性表的合并1(破环原链表+尾插法)

    题意: 令L1 = (X1,X2,X3,X4-Xn), L2 = (y1,y2,y3,y4-ym);是两个线性表.采用带头节点的链表存储,设计一个算法合并L1,L2,结果放在线性表L3中,要求如下: ...

  2. 已知由一个线性链表表示的线性表中含有 3 类字符的数据元素(如:字母,数字和其他字符),试编写算法将该线性链表分割为 3 个循环链表,其中每个循环链表均只含有一类字符。

    先封装一个单链表LA,引用Creat()函数利用尾插法来生成链表,先输入n值来确定单链表中数据元素的个数,然后通过键盘输入元素,创建3个空链表来存放三种不同字符类型,通过Match()中的ASCII码 ...

  3. 单链表-单链表拆分为A和B链表(尾插法+头插法)

    题意: 设C{a1,b1,a2.b2-an,bn}为一线性表,采用带头结点的单链表hc存放,设计一个就地算法,将其拆分为两个线性表,每个线性表均采用带头结点的单链表存储,使得: A = {a1,a2. ...

  4. 链表的两种创建方法——头插法与尾插法

    链表创建的两种方法 引言 ​ 首先讲述了我自己在动态实现数据结构的时候遇到的大坑结构体指针问题,随后就是头插法和尾插法的介绍. 结构体指针 引言 ​ 首先需要讲述的是一个让我改了一天半的bug.实际上 ...

  5. C++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表

    #include <iostream> #include <stdlib.h> #include <cstdio> typedef int ElemType; us ...

  6. 单链表的头插法与尾插法代码实现及详解

    1. 头插法 2. 尾插法 3. 代码测试 1. 头插法   头插法: 从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头结点之后,直到读入结 ...

  7. 头插法和尾插法创建链表(有无头结点)

    头插法和尾插法创建链表(有无头结点) 文章目录 头插法和尾插法创建链表(有无头结点) 1 头插法 1.1头插法建表规则: 1.2 头插法建表代码实现 2 尾插法 2.1 尾插法建表规则: 2.2 尾插 ...

  8. C语言-链表的创建头插法和尾插法(有无头节点)

    文章目录 结构声明 1 头插法(有头节点) 2 头插法(无头节点) 3 尾插法(有头节点) 4 尾插法(无头节点) 结构声明 typedef int ElementType;typedef struc ...

  9. 单链表-单链表拆分为两个线性表(尾插法+尾插法)

    题意: 设C{a1,b1,a2.b2-an,bn}为一线性表,采用带头结点的单链表hc存放,设计一个就地算法,将其拆分为两个线性表,每个线性表均采用带头结点的单链表存储,使得: A = {a1,a2. ...

最新文章

  1. Windows10上使用VS2017编译MXNet源码操作步骤(C++)
  2. Android 实现无网络传输文件(2)
  3. Objective C 中的nil,Nil,NULL和NSNull理解
  4. Python datetime 格式化字符串:strftime()
  5. 某绒面试的病毒分析(一)
  6. 暗黑战神项目详细总结
  7. 在线Excel转XML工具
  8. win10笔记本ps/2键盘鼠标失灵,错误代码39、错误代码10
  9. 智慧环卫系统建设方案(智能垃圾分类收运管理)
  10. 洛克菲勒写给儿子的38封信
  11. maximo跟java_Maximo7.5远程调用maximo的手动输入节点工作流
  12. google map 看经度和纬度
  13. tZERO母公司Overstock股票五个月暴涨37倍背后:已深耕区块链业务数年
  14. discuz 如何去掉:导读-最新发表
  15. 钉钉这两年:陈航自我迭代 阿里社交进击
  16. 云原生,炸裂!(文末有福利)
  17. Osg使用osgQt与Qt结合使用(附项目)(1)
  18. 交换机进阶配置 、 路由器组网 、 企业网架构
  19. A Survey of Adversarial Learning on Graph
  20. 工程师在美国为何成职场上的香饽饽(转自新浪乔磊)

热门文章

  1. eclipse java 7_在Eclipse中编程Java 7
  2. QT 实用代码片段 (持续更新)
  3. 适用于OpenGL离屏渲染上下文的初始化代码
  4. 微软私有云分享(R2)8-PowerShell下载文件
  5. Android ViewGroup等容器控件的使用
  6. 从头开始 Struts 2 入门
  7. silverlight带有复选框的列
  8. 其中:ping.netstat,tracert 是最关键的三个.每年都有!~
  9. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
  10. linux 下的服务