首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
考研
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O
已知3个带头结点的线性链表A、B、C中的结点均依元素值自小至大非递减排列(可能存在两个以上值相同的结点),编写算法对链表A进行如下操作:使操作后的链表A中仅留下3个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算法的时间复杂度为O
admin
2019-08-15
80
问题
已知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://www.kaotiyun.com/show/jlCi777K
本试题收录于:
计算机408题库学硕统考专业分类
0
计算机408
学硕统考专业
相关试题推荐
20世80年代,被称为“机器人王国”的国家是()。
1628年出版了《心血运动论》一书,论证了血液在全身的循环运动,使生理学发展为科学的是()。
洋务运动时期,首批赴欧海军留学生派出的时间是()。
假设系统的所有资源是同类型的,系统中的进程每次申请资源数最多1个,那么,下面列出的4种情况中,()可能发生死锁。情况序号系统中进程数资源总量
分时系统里,在条件相同的情况下,通常KLT(内核级线程)比ULT(用户级线程)得到更多的CPU时间,请简要解释之。
操作数地址存放在寄存器的寻址方式叫()。
设有带头结点的循环双链表表示的线性表L===(a1,a2,……,an-1,an)。设计在时间和空间上都尽可能高效的算法,将L改造成L=(a1,a3,……,an……a4,a2)。要求:(1)给出算法的基本设计思想。(2)根据设计思想,采用
已知一个线性表(38,25,74,63,52,48),假定采用散:列函数h(key)=key%7计算散列地址,并散列存储在散列表A[0..6]中,若采用线性探测方法解决冲突,则在该散列表上进行等概率成功查找的平均查找长度为()。
OSI模型中完成路径选择功能的层次是()。
对于100Mbps的以太网交换机,当输出端口无排队,以直通交换(cut-troughswitching)方式转发一个以太网帧(不包括前导码)时,引入的转发延迟至少是_______。
随机试题
甲骨文
A.急性心房颤动B.阵发性心房颤动C.持续性心房颤动D.永久性心房颤动男性,47岁,心悸3年。动态心电图检查示:快心室率心房颤动。曾服用胺碘酮转复为窦性心律并维持。1个月前心房颤动再发,改用电复律成功。应诊断为
提示:本题为选作题,分甲、乙两题。请选择一题作答;答题时请务必标明甲题或乙题;甲、乙两题均作答的,仅对书写在前的进行评阅。甲题:案情:犯罪嫌疑人张某、李某、高某,因涉嫌故意杀人的共同犯罪被检察机关提起公诉。由于三人对故意杀人犯罪供认不讳,因此A省
配置高速缓冲存储器(Cache)是为了解决()。
经批准开业的旅馆,如有()等情况,应当在工商行政管理部门办理变更登记后3日内,向当地公安机关部门备案。
在思想、情感、态度和行为上主动接受他人的影响,使自己的态度和行为与他人相接近称之为()
19世纪30~40年代,欧洲爆发了三次大规模的工人运动,标志着无产阶级已经觉醒,并开始作为一支独立的政治力量登上政治历史舞台。这三次工人运动是()。
在计算机软件系统中,控制管理计算机自身的基本软件是()。
充分尊重志愿服务组织的社会性、志愿性、公益性、非__________性特点,引导志愿服务组织按照法律法规和章程开展活动,依法自治。着力推进志愿服务组织、志愿者与志愿服务活动共同发展,__________志愿服务组织基础。填入画横线部分最恰当的一项
公民基本权利也称宪法权利,关于公民基本权利下列说法错误的是()。
最新回复
(
0
)