#include<iostream>
using namespace std;typedef struct lnode
{//定义结点类型int data;struct lnode *next;//递归定义
} lnode,*LinkList;void CreateList(LinkList &L,int n)
{//创建新链表L=new lnode;//生成一个头结点L->next=NULL;//结点L的next置空for(int i=0; i<n; i++){lnode *p;p=new lnode;//生成新结点cin>>p->data;//输入结点数据域p->next=L->next;L->next=p;}
}void MegerList(LinkList &LA,LinkList &LB,LinkList &LC)
{lnode *pa,*pb,*pc;//定义三个结点pa=new lnode;pb=new lnode;pc=new lnode;pa=LA->next;//pa指向链表LA的第一个结点pb=LB->next;//指向链表LB的第一个结点LC=LA;pc=LC;//pc指向LC,也就是指向LAwhile(pa&&pb){//如果pa小于等于pb,把pa赋给pc的next域,pc指向pa,pa指向pa的下一个元素if(pa->data<pb->data){pc->next=pa;pc=pa;pa=pa->next;}if(pa->data>pb->data){//如果pa大于pb,把pb赋给pc的next域,pc指向pb,pb指向pb的下一个元素pc->next=pb;pc=pb;pb=pb->next;}if(pa->data==pb->data){pc->next=pa;pc=pa;pa=pa->next;pb=pb->next;}}pc->next=pa?pa:pb;//将非空链表的剩余段插入到pc所指结点之后delete LB;//释放LB的头结点
}void display(LinkList &L)
{lnode *p;p=new lnode;p=L->next;while(p){cout<<p->data;p=p->next;}
}int main()
{LinkList LA,LB,LC;int m,n;cout<<"请输入LA的长度:";cin>>m;cout<<"请逆序递减输入LA的元素:";CreateList(LA,m);cout<<"请输入LB的长度:";cin>>n;cout<<"请逆序递减输入LB的元素:";CreateList(LB,n);MegerList(LA,LB,LC);cout<<"合并后的链表LC为:";display(LC);return 0;
}

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

  1. 【数据结构笔记】将两个递增的有序链表合并为一个递增的有序链表

    将两个递增的有序链表合并为一个递增的有序链表.要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间.表中不允许有重复的数据. [题目分析] 合并后的新表用头指针Lc指向,pa和pb分别 ...

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

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

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

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

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

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

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

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

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

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

  7. 将两个递增的有序链表合并成一个递增的有序链表(CPP版)

    要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间,表中不允许由重复的数据 #include<iostream> using namespace std; //自定义链表的 ...

  8. 两个非递减链表合并为非递增链表(可重复)

    *题目:将两个非递减的有序链表合并为一个非递增的有序链表. * 要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间. * 表中允许有重复的数据. 非递减是指两相邻数是递增或者相等的,非 ...

  9. 将两个有序链表合并为一个链表任然有序C语言

    将两个有序链表合并为一个链表任然有序,两个链表都是从大到小或者从小到大. 方法: 1.将两个链表连起来,对所有元素进行排序. 2.因为两个链表的长度可能不同,则将两链表相同长度的一部分进行排序,将较长 ...

最新文章

  1. QUARK的增强版C-QUARK问世,有效提升蛋白质结构从头预测精度
  2. 东北黑土区不同纬度农田土壤真菌分子生态网络的比较
  3. linux 内核模块声明 MODULE_LICENSE
  4. php开发app接口教学,php开发App接口
  5. 生产者与消费者(二)---await与 signal
  6. boost::allocator_void_pointer
  7. Graph cut [转]
  8. java运行构建期间出错_构建和运行Java 8支持
  9. linux系统下修改某个文件夹下所有的文件权限
  10. pyqt5-QFrame边框样式
  11. OGRE: OgreOverlaySystem.h: No such file or directory
  12. 做一个完整的Java Web项目需要掌握的技能[转]
  13. Win11怎么卸载软件?Win11彻底卸载软件教程
  14. graphpad怎么修改图片大小_Graphpad作图小技巧:如何统一图片尺寸
  15. 开源网上商城程序(简介国内外开源网店系统)
  16. 业务员应熟记的应酬劝酒词大全
  17. Clannad(1)
  18. 关键路径例题图解_干货 | 细胞信号通路图解之细胞自噬信号通路
  19. Vue教程 第一篇 基础
  20. Windows server远程桌面配置【只需两步的极简快速版】

热门文章

  1. LeetCode100 相同的树-简单
  2. Paint the Tree CodeForces - 1244D(看似是树,其实是条链)
  3. python车辆识别硬件_Opencv python之车辆识别项目
  4. linux系统中变量,Linux系统中的环境变量知识详解
  5. P3396 哈希冲突 根号分治
  6. P4015 运输问题
  7. [费用流]数字配对,新生舞会
  8. 学习手记(2019/7/05~2019/8/31)——快乐暑假
  9. P2698-花盆Flowerpot【单调队列】
  10. codeforces1493 D. GCD of an Array(数论)