首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O
admin
2019-08-15
30
问题
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O(m+n+p),其中m、n和p分别为3个表的长度。
选项
答案
typedef struct LNode{ int data; struct LNode * next ; } * Linkedlist: LinkedList Common(LinkedList A,B,C){ //链表A、链表B和链表C是三个带头结点且结点元素值非递减排列的有序表 //本算法使链表A仅留下三个表均包含的结点,且结点值不重复,释放所有结点 Linkedlist*pa,* pb,*pc,*pre,*u: pa=A一>next;pb=B一>next;pc=C一>next i //pa,pb,pc分别是链表A,B,C的工作指针 pre=A; //pre是链表A中当前结点的前驱结点的指针 while(pa&&pb&&pc){ //当链表A,B和C均不空时,查找三链表共同元素 while(pa&&pb) if(pa一>data<pb一>data){u=pa;pa=pa一>next;free(u);}//结点元素值小时,后移指针 else if(pa一>data>pb一>data)pb=pb一>next: else if(pa&&pb){ //处理链表A和B元素值相等的结点 while(pc&&pc一>data<pa一>data)pc=pc一>next; if(pc){ //pc当前结点值与pa当前结点值不等,pa后移指针 if(pc->data>pa一>data){u=pa;pa=pa一>next;free(u);} else{ //pc、pa和pb对应结点元素值相等 if(pre==A) {pre一>next=pa;pre=pa;pa=pa一>next;} //结果表中第一个结点 else if(pre一>data==pa一>deLta) //(处理)重复结点不链入链表A {u=pa;pa=pa一>next;free(u);} else{pre一>next=pa;pre=pa;pa=pa一>next;} //将新结点链入链表A pb=pb一>next;pc=pc一>next; //链表的工作指针后移 }//else pc,pa和pb对应结点元素值相等 } if(pa==null)pre一>next=null; //原链表A已到尾,置新链表A表尾 elsef //处理原链表A未到尾而链表B或链表C到尾的情况 pre->next=null: //置链表A表尾标记 while(pa!=null){U=pa;pa=pa一>next;free(u);} //删除原链表A剩余元素 } } } } 提示:留下3个链表中的公共数据,首先查找链表A和链表B中公共数据,再去链表C中找有无该数据。要消除重复元素,应记住前驱,要求时间复杂度为O(m+n+p),在查找每个链表时,指针不能回溯。 算法实现时,链表A、链表B和链表C均从头到尾(严格地说链表B、链表C中最多一个到尾)遍历一遍,算法时间复杂度符合O(m+n+p)。算法主要有while(pa&&pb&&p)。
解析
转载请注明原文地址:https://jikaoti.com/ti/W3GjFFFM
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
罗马共和国早期平民反对贵族斗争过程中,废除债务奴隶制的是()。
在一个8级中断的系统中,硬件中断响应从高到低的优先顺序是1→2→3→4→5→6→7→8,通过中断屏蔽技术,将中断处理优先顺序设置为1→3→5→7→2→4→6→8,如果CPU在执行一个应用程序时有5、6、7、8级的四个中断同时到达,CPU在按优先顺序处理到第
将两个长度为N的有序表归并到一个长度为2N的有序表,最少需要比较的次数是(),最多需要比较的次数是()。
操作数地址存放在寄存器的寻址方式叫()。
三类线程search、insert、delete共享(访问)单链表,利用P、V原语操作实现这三类线程。限定如下:(1)search可以与同类线程同时执行;(2)insert类线程之间互斥,但是可以与任意多search同时执行;(3)del
一131的1字节、2字节补码分别是()。
假设在一台单处理机上执行如下表所示的进程,且假定这些进程在时刻0以1,2,3,4,5的顺序创建。时间单位为时间片,优先级以数值大者为优。(1)请说明分别使用FCFS、RR(时间片=1)、SPF以及非抢夺式优先级调度算法时,这些进程的执行
数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据链路接通了”的区别何在?
某计算机主存容量为4M×16位,且存储字长与指令字长相等,若该机指令系统可完成108种操作,操作码位数固定,且有直接、变址、基址、相对、立即5种寻址方式,试回答:(1)画出一地址指令格式并指出各字段的作用。(2)该指令直接寻址的最大范
随机试题
向一位客户销售多种相关的服务或产品的销售活动是()
已知曲线y=x2,求曲线上当x=l时的切线方程;
A.广泛小血管炎伴血栓形成B.血管内膜纤维化C.急性间质炎D.急性血管炎超急性排斥反应的病理特点是
女性,37岁,主因多食、消瘦3个月入院,诊断为原发性甲亢。清晨空腹测得:体温36.8~C,脉搏117次/分,呼吸20次/分,血压130/70mmHg。该患者的基础代谢率为
生产性毒物进入人体最常见的途径为
A、垂体后叶素B、缩宫素C、加压素D、前列腺素E、麦角新碱垂体性尿崩症可选用
设随机变量X与Y相互独立,方差分别为6和3,则D(2X—Y)=()。
甲与乙订立了一份苹果购销合同,合同约定:甲向乙交付20万千克苹果,货款为40万元,乙向甲支付定金4万元;如任何一方不履行合同应支付违约金6万元。甲因将苹果卖给丙而无法向乙交付苹果,乙提出的如下诉讼请求中,既能最大限度保护自己的利益,又能获得法院支持的诉讼请
下列有关个人出售住房所得征收个人所得税的说法,表述错误的是( )。
Couldahugadaykeepthedoctoraway?Theanswermaybearesounding"yes!"Besideshelpingyoufeelcloseand【C1】________to
最新回复
(
0
)