将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。

[题目分析]
合并后的新表用头指针Lc指向,pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点,从第一个
结点开始进行比较,当两个链表La和Lb均为到达表尾结点时,依次摘取其中较小者重新链接在Lc表的最后。如果两
个表中的元素相等,只摘取La表中的元素,删除Lb表中的元素,这样确保合并后表中无重复的元素。当一个表到达
表尾结点为空时,将非空表的剩余元素直接链接在Lc表的最后。
void MergeList(LinkList &La,LinkList &Lb,LinkList &Lc)
{// 合并链表La和Lb,合并后的新表使用头指针Lc指向// pa和pb分别是链表La和Lb的工作指针,初始化为相应链表的第一个结点pa = La->next;pb = Lb->next;// 用La的头结点作为Lc的头结点Lc = pc = La;while(pa && pb){// 取较小者La中的元素,将pa链接在pc的后面,pa指针后移if(pa->data < pb->data){pc->next = pa;pc = pa;pa = pa->next;}// 取较小者Lb中的元素,将pb链接在pc的后面,pb指针后移else if(pa->data > pb->data){pc-next = pb;pc = pb;pb = pb->next;}// 相等时取La中的元素,删除Lb中的元素else{pc->next = pa;pc = pa;pa = pa->next;q = pb->next;delete pb;pb = q;}}pc->next = pa ? pa : pb;       // 插入剩余段delete Lb;          // 释放Lb的头结点
}

【数据结构笔记】将两个递增的有序链表合并为一个递增的有序链表相关推荐

  1. 链表面试题3:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成 的。

    链表面试题3:将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成 的. 首先我们的思想是将得一个链表和第二个链表的每个结点进行比较,谁小谁就插入到新链表的最后. ...

  2. 链表归并成递减c语言,将两个递增的单链表合并为一个递减的单链表

    问题描述: 假设有两个按元素值递增次序排列的线性表,均以单链表形式存储.请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来两个单链表的结点存放归并后的单链表. 问题解答: ...

  3. 两个非递减有序集合合并为一个非递减有序集合

    已知线性表LA和LB中的数据元素或是按值非递减有序排列,现要求将LA和LB合并为一个新的线性表LC,且LC中的元素要求同样按值非递减排列. 上述问题是数据结构(C语言)上的一个线性表的合并问题,这里使 ...

  4. 将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。

    题目分析: 合并后的新表使用头指针 Lc 指向, pa 和 pb 分别是链表 La 和 Lb 的工作指针 , 初始化为 相应链表的第一个结点,从第一个结点开始进行比较,当两个链表 La 和 Lb 均为 ...

  5. 将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的空间。表中不允许又重复的数据

    #include<iostream> using namespace std;typedef struct lnode {//定义结点类型int data;struct lnode *ne ...

  6. 【练习】归并和冒泡两种方法c++将两个无序链表合并为一个升序的有序链表

    定义: struct node {int data;node* next;}; 新建有头指针的链表: struct node *head; head = NULL;//头指针初始为空 struct n ...

  7. C++ leetcode 21. 合并两个有序链表 将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

    一.C++ 代码 class Solution { public:ListNode* insert(ListNode *res, int val) {if (res->val == INT_MA ...

  8. Java实现两个递增有序链表合并成一个递增有序链表和两个非递减有序链表合成一个非递增有序链表

    代码如下: package sjjgniub;import java.util.LinkedList; import java.util.Scanner;@SuppressWarnings(" ...

  9. 顺序表:将两个有序表合并成一个新的有序顺序表

    题目:将两个有序表合并成为一个新的有序顺序表,并由函数返回结果顺序表. 算法思想:假设有AB两个顺序表,要使得合并后仍然有序,因此可以将AB中对应的数作比较,把较小的放入C中,比完之后将剩下的依次放入 ...

最新文章

  1. 详解医学顶刊《柳叶刀》最新发表新型冠状病毒研究论文
  2. 逆水寒服务器新消息,游戏新消息:逆水寒太火爆服务器爆满王思聪都挤不进去...
  3. 伪语言PHP,PHP语言之伪静态几种做法
  4. JAVA 对象序列化(二)——Externalizable
  5. PMCAFF微课堂 | 前YY产品总监深度揭秘P2P运营推广精髓
  6. C++宏定义中#与##的妙用
  7. C语言学习之编写一个C程序,运行时输人abc三个值,输出其中值最大者。
  8. Androidclient与服务端交互之登陆演示样例
  9. Java核心技术笔记——第 12 章 反射
  10. Class类和Object类及用法(一)
  11. 一道不知道哪里来的容斥题
  12. 解决办法:Invalid Gradle JDK configuration found
  13. 四、day_03计时、关灯游戏
  14. 《大道至简》读书笔记
  15. ubuntu18本地镜像源_Ubuntu 18.04 搭建私有软件镜像源(支持 Ubuntu 和 CentOS)
  16. macOS app动态修改app图标,图标为icns格式
  17. 【入门】(二)相机标定、矩阵求解、相机位姿势估计
  18. 2020-10-19 进制转换
  19. 某一个社会舆情事件发展走势和动态要如何分析的方法
  20. Utorrent 设置

热门文章

  1. uniapp 列表搜索模糊查询
  2. 通过userAgent判断是是否手机、微信、手机厂家
  3. xp外观主题下载_增强Windows XP外观的简便方法
  4. 七(10)springtask-RabbitMq-内容审核
  5. 分析:公众号运营+引流,怎么从0到1运营
  6. OpenCV - imwrite保存透明PNG
  7. 高德地图3D轨迹回放 + 视野跟随功能
  8. rancher应用商店的使用
  9. NYOJ 456 邮票分你一半
  10. 短诗整理1——奋进+惜时