




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线性表,以前交过的十道题1假设有两个按元素值递增次序排列的线性表,均以单链表形式存储,请编写算法将这两个单链表归并为一个按元素值递减次序排列的单链表,并要求利用原来的两个单链表的结点存放归并后的单链表。【北京大学 1998 LinkedList Union(LinkedList la,lb)/la.,lb分别是带头结点的两个单链表的头指针,链表中的元素值按递增序列排列,本算法将两个链表合成一个按元素递减次序排列的单链表。 pa=la-next;pb=lb-next;/pa,pb分别是链表la和lb的工作指针 la-next=null; /la作结果链表的头指针,先将结果链表初始化为空 while(pa!=null&pb!=null) /当两链表均不为空时作 if (pa-datadata) r=pa-next; /将pa的后结继结点暂存于r。 pa-next=la-next; /将pa结点链于结果表中,同时逆置 la-next=pa; pa=r; /恢复pa为当前的比较结点。 else r=pb-next; /将pb的后继结点暂存于r。 pb-next=la-next; /将pb结点链接于结果表中,同时逆置 la-next=pb; pb=r; /恢复pb为当前的比较结点。 while (pa!=null) r=pa-next;pa-next=la-next;la-next=pa;pa=r;while (pb!=null) r=pb-next;pb-next=la-next;la-next=pb;pb=r;2 带头结点且头指针ha和hb的两线性表A和B分别表示两个集合,两表中的元表皆为递增有序,请写一算法求A和B的并集AUB,要求该并集中的元表仍保持递增有序,且要利用A和B的原有结点空间LinkedList Union(LinkedList ha,hb)/线性表A和B代表两个集合,以链式存储结构存储,元素递增有序。ha和hb分别是其链表的头指针。本算法求A和B的并集/AuB,仍用线性表表示,结果链表元素也是递增有序 pa=ha-next;pb=hb-next;/设工作指针pa和pbpc=ha; /pb为结果链表当前结点的前驱指针 while(pa&pb)if(pa-datadata)pc-next=pa;pc=pa;pa=pa-next;else if(pa-datapb-data)pc-next=pb;pc=pb;pb=pb-next;else /处理pa-data=pb-datapc-next=pa;pc=pa;pa=pa-next;u=pb;pb=pb-next;free(u);if(pa) pc-next=pa;/若ha表未空,则链入结果表。else pc-next=pb;/若hb表未空,则链入结果表free(hb); /释放hb头结点return(ha);4、一直不带头结点的线性链表list,链表中结点构造为(data,link),其中data为数据域,link为指针域,请写一算法,将该链表按结点数据域的值的大小从小到大重新链接,要求链接过程中不得使用除该链表以外的任何链结点空间LinkedList LinkListSort(LinkedList list) /list 是不带头结点的线性链表,链表结点构造为data和link两个域,data是数据域,link是指针域。本算法将该链表按结点数据域的值得大小,从小到大重新连接。p=list-link;/p是工作指针,指向待排序的当前元素。list-link=null; /假定第一个元素有序,即链表中现只有一个结点。While(p!=null)r=p-link; /r是p的后继q=list;if(q-datap-data) /处理待排序结点p比第一个元素结点小的情况p-link=list;list=p; /链表指针指向最小元素else /查找元素值最小元素while(q-link!=null&q-link-datadata)q=q-link;p-link=q-link;/蒋当前排序结点链入有序链表中q-link=p; p=r;/p指向下个待排序结点。算法讨论: 算法时间复杂度的分析与用顺序存储结构的情况相同。但顺序存储结构将第i(i1)个元素插入到前面第1至第i-1个元素的有序表时,是将第i个元素先与第i-1个元素比较,而在链表最佳情况均是和第一元素比较,两种存储结构下最佳和最差情况的比较次数相同,在链表情况下,不移动元素,而是修改结点指针。另一说明是。本题要求线性链表list不带头节点,而且 不使用空间,所以需要考虑当前结点元素值比有序链表第一结点的元素还小的情况,这时要修改链表指针list。如果list是头节点的指针,则相应处理要简单,如下p=list-link; /p指向第一元素结点list-link=null;/有序链表初始化while(p!=null) r=p-link;/保存后继q=list;while(q-link!=null&q-link-datadata)q=q-link;p-link=q-link;q=r;5题 已知线性表(a1,a2,a3,a4.an)按顺序存于内存每个元素都是整数。试设计用最少的时间把所有值为负数的元素移动到全部正数值元素前边的算法。答案:6。试编写在头结点的单链表中删除(一个)最小值结点的(高效)算法。Void delete(Linklist &L)LinkedList Delete(LinkedList L) / L是带头结点的单链表,本算法删除其最小值结点 p=L-next; /p为工作指针。指向待处理后的结点,假定链表非空pre=L; / pre指向最小值结点的前驱q=p; / q指向最小值结点,初始假定第一元素结点试最小值结点 while(p-next!=null) if(p-next-datadata) pre=p; q=p-next; / 查最小值结点 p=p-next; / 指针后移 pre-next=q-next; / 从链表上删除最小值结点 free(q); /释放最小值空间7。已知非空线性链表由list指出,链结点的构造为(data,link)请写出一算法,将链表中数据域值最小的那个链表结点移到链表的最前面,要求:不得额外申请新的链结点LinkedList delinsert(LinkedList list)p=list-link;pre=list;q=p;while(p-link!=null)if(p-link-datadata) pre=p;q=p-link;if(q!=list-link)pre-link=q-link;q-link=list-link;list-link=q;8、设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:(1)找出最小值结点,且打印该数值; (2)若该数值时奇数,则将其与直接后继结点的数值交换;(3)若该数值时偶数,则将其直接后继结点删除。void MiniValue(LinkedList la) p=la-next; pre=p; while (p-next!=null) if(p-next-datadata) pre=p-next; p=p-next; printf(最小值%dn,pre-data); if(pre-data%2!=0) /处理奇数 if(pre-next!=null) /若该结点没有后继,则不必交换 t=pre-data;pre-data=pre-next-data;pre-next-data=t; /交换完毕else /处理偶数情况 if(pre-next!=null) /若最小值结点是最后一个结点,则无后继 u=pre-next;pre-next=u-next;free(u);/释放后继结点空间9 请写一个算法将顺序存储结构的线性表( a1,a2,a3.an).答案:10.线性表()中元素递增有序且按顺序存储于计算机内,要求设计一算法完成:(1)用最少时间在表中查找数值为X的元素.(2)若找到将其与后继元素位置交换.(3)若找不到将其插入表中并使表中元素仍递增有序.采用折半查找void SearchExchangeInsert(ElemType a; ElemType x) /a是具有n个元素的递增有序线性表,顺序存储。本算法在表中查找数值为/x的元素,如查到则与其后继交换位置;如查不到,则插入表中。且使表仍递增有序。 low=0; high=n-1; /low和high指向线性表下届和上届的下标 While (low=high) mid=(low+high)/2; /找中间位置If(amid=x) break; /找到x,退出while循环。else if (amidhigh) /查找失败,插入数据元素x for (i=n-1; ihigh; i-) ai+1=ai; /后移元素 ai+1=x; /插入x /结束插入【算法讨论】首先是线性表的描述,算法中使用一维数组a表示线性表,未使用包含数据元素的一维数组和指示线性表长度的结构体。若使用结构体,对元素的引用应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025湖南张家界市住房保障和房产市场服务中心招聘公益性岗位人员1人模拟试卷及答案详解(历年真题)
- 2025年分级设备地矿勘测设备:钻探机合作协议书
- Heptadecanonyldethio-CoA-Heptadecanonyldethio-coenzyme-A-生命科学试剂-MCE
- Glycidyl-myristate-d5-Myristic-acid-glycidyl-ester-d-sub-5-sub-生命科学试剂-MCE
- 2025安徽滁州市明光市消防救援大队招聘政府专职消防员15人考前自测高频考点模拟试题参考答案详解
- 小学元旦安全教育培训课件
- 2025广东湛江市坡头区社会保险基金管理局招聘编外人员1人模拟试卷带答案详解
- 2025年琼海市校园招聘教育类专业技术人才(西安站)考前自测高频考点模拟试题及答案详解(名校卷)
- 生产安全管理制度执行记录表安全事故预防功能
- 2025年泉州德化县公办学校专项招聘编制内新任教师19人(二)模拟试卷及答案详解(考点梳理)
- 预防老年误吸的课件
- 2025年国家能源投资集团有限责任公司校园招聘笔试备考题库附答案详解(综合题)
- 2025年零碳园区综合能源技术发展现状与展望报告-华电电科院
- 环保工程现场施工方案(3篇)
- 索尼微单相机A7 II(ILCE-7M2)使用说明书
- 中级护理真题题库及答案解析
- 一年级新生开学第一课常规训练
- 直播助农培训课件
- 长期照护师抗压考核试卷及答案
- 钢箱梁桥面铺装施工细节及专项方案研究
- 2025版自然人个人创业孵化器贷款协议
评论
0/150
提交评论