首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O
admin
2019-01-16
50
问题
已知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; //pa,pb,pc分别是链表A,B,C的工作指针 pre=A; //pre是链表A中当前结点的前驱结点的指针 while(pa&&pb&&pc){ //当链表A,B和C均不空时,查找三链表共同元素 while(pa&&pb) if(pa一>data
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
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一>data) //(处理)重复结点不链入链表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表尾 else{ //处理原链表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://www.kaotiyun.com/show/sYRi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
根据材料,结合有关知识,回答问题:埃及的河流空了,人(可以)徒步涉过。人们找不到能行船的水。河床变成了沙滩。沙滩上没有水,河床上也没有水……一切好东西都不见了,这个地方枯竭了……土地缩小了,(但是)它的行政人员却很多。土地荒凉不毛;(但)税却很重,只有
论述秦国商鞅变法的内容、过程以及重要意义。
下列关于《凡尔赛和约》的说法,全部错误的是()。①《凡尔赛和约》中不许德国设防区是莱茵河西岸50公里以内区域②《凡尔赛和约》中,战胜国处置德国的全部海外殖民地的方式是“托管制”③和约有关德国疆界问题,把原属波兰的领上基本上归还波兰④
第一次国共合作采取了共产党员以个人身份加入国民党的“党内合作”方式。最早提出这种方式的是()。
下列哪一个不是罗马王政时代的管理机构?()
巴黎和会上,英美主张把原德国在山东的权利转让给日本,华盛顿会议又表示支持中国让日本归还山东的要求,英美态度发生变化的根本原因是()。
某系统中n个相互独立的生产者进程为一个消费者进程提供数据,假设每个生产者提供的数据写入各不相同的缓冲区,且生产者写缓冲区的速度比消费者读缓冲区的速度快,则缓冲区个数的最优值应为()。
下图是三个计算机局域网A,B和C,分别包含10台,8台和5台计算机,通过路由器互联,并通过该路由器接口d联入因特网。路由器各端口名分别为a、b、c和d(假设端口d接入IP地址为61.60.21.80的互联网地址)。LANA和LANB公用一个C类IP地址
某网络拓扑如图A-3所示,路由器R1通过接口E1、E2分别连接局域网1、局域网2,通过接口LO连接路由器R2,并通过路由器R2连接域名服务器与互联网。R1的L0接口的IP地址是202.118.2.1,R2的L0接口的IP地址是202.118.2.2,L1接
设无向图G=(V,E)和G’=(V’,E’),如果G’是G的生成树,则下面说法中错误的是()。
随机试题
企业分配给职工的工资属于()
根据2005年心肺复苏指南,首选的打开气道的方法是
下列哪项不是经腹腔镜输卵管绝育术的禁忌症
下列关于有限合伙企业的论述,正确的包括( )。
黄某和刘某是夫妻,其中刘某是哑巴,他们日常生活中用哑语进行交流。一天晚上,他们夫妻二人目睹了犯罪嫌疑人抢劫邻居的全过程。公安机关对他们进行询问,下列有关询问方式的说法哪些是错误的?
违约的形式有实际违约和()。
注册会计师张杉在审计C公司2005年度财务报表时,应当根据具体情况判断某一事项是否属于重大事项,并进而考虑在审计工作底稿中以重大事项概要的形式加以记录。如果实施一项审计程序的结果表明( ),则张杉应将该结果归入重大事项。注册会计师应当按照会计师事务所
党的十八届三中全会指出,全面深化改革的总目标是()
•Lookattheformbelow.•Youwillhearawomanaskingforsomeinformation.Date:8.6.01To:OxfordManage
Weallbelievethatitishardforhimtotakeupother(responsible)________now.
最新回复
(
0
)