首页 > 其他分享 >每日记录(2.4线性表的应用)

每日记录(2.4线性表的应用)

时间:2023-06-05 23:44:06浏览次数:112  
标签:Lb 线性表 记录 next pb pc length pa 2.4

有序表的合并
已知线性表La 和Lb中的数据元素按值非递减有序排列,现要求将La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减有序排列。

La=(1 ,7, 8)
Lb=(2, 4, 6, 8, 10, 11)
Lc=(1, 2, 4, 6, 7 , 8, 8, 10, 11)

0.新建一个链表
新建一个空表C,直接在A和B中每次选取最小值插入到C中,复杂度O(A.length+B.length),但是需要新开辟一个空表比较占用内存。

void MergeList_Sq(SqList LA,SqList LB,SqList &LC){ 
    pa = LA.elem;  
    pb = LB.elem;     //指针pa和pb的初值分别指向两个表的第一个元素 
    LC.length = LA.length+LB.length;          //新表长度为待合并两表的长度之和 
    LC.elem = new ElemType[LC.length];        //为合并后的新表分配一个数组空间 
    pc = LC.elem;                                 //指针pc指向新表的第一个元素 
    pa_last = LA.elem+LA.length-1;     //指针pa_last指向LA表的最后一个元素 
    pb_last = LB.elem+LB.length-1;     //指针pb_last指向LB表的最后一个元素 
    while(pa <= pa_last && pb <= pb_last){      //两个表都非空 
        if(*pa <= *pb) *pc++ = *pa++;            //依次“摘取”两表中值较小的结点      
        else *pc++ = *pb++;   
    } 
    //此时a,b 之中一定有一个表为空
    while(pb <= pb_last)  *pc++ = *pb++;          //LB表已到达表尾
    while(pa <= pa_last)  *pc++ = *pa++;          //LA表已到达表尾 
}//MergeList_Sq 

1.直接合并

只建一个新结点,相当于尾插法的end尾结点,而不是创建一个新链表,结点Pc每次指向A/B中最小值的结点,把两个链表连在一起(B连到A上面),不需要新开辟一个链表浪费空间,时间复杂度和上面的一样,都是暴力循环。

void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
   pa=La->next;  pb=Lb->next;
   pc=Lc=La;                    //用La的头结点作为Lc的头结点 
   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;      //插入剩余段  
   delete Lb;                     //释放Lb的头结点}  

 

标签:Lb,线性表,记录,next,pb,pc,length,pa,2.4
From: https://www.cnblogs.com/xiao-hong111/p/17459322.html

相关文章

  • 每日记录(数据结构 第一章 绪论)
    这些天准备学一下数据结构,面对越来越多的问题都需要使用设计一些算法,所以从网上摘抄总结的数据结构有关的知识 数据(data)是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素(dataelement)是数据的基本单位,在计算机程......
  • 每日记录(数据结构 第二章 线性表() )
     线性表的定义:存在唯一一个“第一个”元素存在唯一一个“最后一个”元素除第一个元素外,每一个元素都有且只有一个前驱除最后一个元素外,每个元素都有且只有一个后继一、线性表顺序存储结构(顺序表)0.线性表的基本概念线性表强调元素在逻辑上紧密相邻,所以首先想到用数组存储。但是......
  • Spring Web 日志记录切面
    SpringWeb日志记录切面应用:在我们进行rest接口编写时需要对该接口的耗时、参数、请求路径、返回值进行对应的记录日志注解把日志封装成注解的形式可以更好的供使用者使用,同时也利于解耦合代码@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPo......
  • 阿里云 arthas JVM 诊断工具常用命令记录
    看完快速入门再回来:https://arthas.aliyun.com/doc/quick-start.htmljad:https://arthas.aliyun.com/doc/jad.html反编译class文件,查看JVM加载的class文件源代码,类名后面跟一个空格加方法名可以单独反编译某一个方法源代码jadcom.geostar.geoonline.service_visit_log.d......
  • git已提交未推送的记录追加提交
    工作中,经常出现提交完代码之后,发现提交的代码还有遗漏的地方没改或者改错了。如果连续的提交,都是同一个需求改动的页面代码,就会导致连续提交记录中有很多无用的提交记录,显得git记录很乱。此时提交就不想保留上一次的提交记录。还有时,提交完代码之后,发现自己的提交记录描述不正确......
  • 记录--JavaScript 中有趣的 9 个常用编码套路
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助1️⃣set对象:数组快速去重常规情况下,我们想要筛选唯一值,一般会想到遍历数组然后逐个对比,或者使用成熟的库比如lodash之类的。不过,ES6带来了一个新玩意儿!它引入了一个全新的对象类型:Set!而且,如果结合上...展开运算符......
  • 【React工作记录八十七】React+antDesign实现上传图片功能(类组件)
    前言大家好我是歌谣今天继续给大家带来工作中实战部分的一些代码的封装和认识需求实现1可以支持上传最多九张图片2图片支持预览替换删除3支持自定义上传文件大小格式未上传提示实现效果子组件封装UploadImage组件*@Description:公共上传图片*@param{Array}type图片......
  • 【React工作记录八十八】React+antDesign封装一个tab组件(类组件)
    前言我是歌谣放弃很容易但是坚持一定很酷喜欢我就一键三连哈微信公众号关注前端小歌谣在我们的工作生活中每次学习一个框架我们就不免要封装组件而具备封装一个完美组件的能力我称之为"优秀"简单的父子组件父组件<Geyao/>子组件importReact,{Component}from'react';......
  • 记录一下这次关于死循环使用愚蠢的行为
    在一个多线程的使用场景下,有个变量标记线程是否退出,然后我有这么一行代码while(!stopRequest){}这个问题是cpu某个核会一直占用,正确做法是在loop中sleep一段时间,例如1毫秒,10毫秒,100毫秒。让Cpu资源释放出去,sleep的时间越短,cpu资源就越紧张......
  • UE5 启动出错记录
    Themapspecifiedonthecommandline couldnotbefound......