ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:19.90KB ,
资源ID:7440633      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7440633.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(线性表编程练习题.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

线性表编程练习题.docx

1、线性表编程练习题1、 假设有两个按元素值递增次序排列的线性表,均以单链表形式存 储。请编写算法将这两个单链表归并为一个按元素值递减次序排列的 单链表,并要求利用原来两个单链表的结点存放归并后的单链表。输入:1 2 5 6 83 4 7 9 10输出:10 9 8 7 6 5 4 3 2 1测试数据输入:7 9 10 118 12 13 14输出:14 13 12 11 10 9 8 7链表翻转2.带头结点且头指针为ha和hb的两线性表A和B分别表示两个集 合。两表中的兀素皆为递增有序。请写一算法求 A和B的并集AUB 要求该并集中的元素仍保持递增有序。且要利用A和B的原有结点空 间。输入:1

2、2 5 6 82 5 7 9输出:1 2 5 6 7 8 9测试数据输入:7 9 10 118 9 10 11输出:7 8 9 10 113.知L1、L2分别为两循环单链表的头结点指针, m,n分别为L1、L2表中数据结点个数。要求设计一算法,用最快速度将两表合并成一个 带头结点的循环单链表。4顺序结构线性表LA与LB的结点关键字为整数。LA与LB的元素 按非递减有序,线性表空间足够大。试用类 PASCALS言给出一种高 效算法,将LB中元素合到LA中,使新的LA的元素仍保持非递减有 序。咼效指最大限度的避免移动兀素。5.已知不带头结点的线性链表 list ,链表中结点构造为(data、 li

3、nk ),其中data为数据域,link为指针域。请写一算法,将该链 表按结点数据域的值的大小从小到大重新链接。要求链接过程中不得 使用除该链表以外的任何链结点空间。6.设L为单链表的头结点地址,其数据结点的数据都是正整数且无 相同的,试设计利用直接插入的原则把该链表整理成数据递增的有序 单链表的算法。7.设Listhead 为一单链表的头指针,单链表的每个结点由一个整 数域DATA和指针域NEXTS成,整数在单链表中是无序的。编一 PASCAL 过程,将Listhead链中结点分成一个奇数链和一个偶数链,分别由P,Q指向,每个链中的数据按由小到大排列。 程序中不得使用NEW过程申请空间。8.

4、已知线性表(al a2 a3an)按顺序存于内存,每个元素都是整 数,试设计用最少时间把所有值为负数的元素移到全部正数值元素前 边的算法:例:(X,-X,-X,X,X,-X X)变为(-x,-x,-x x,x,x )。9试编写在带头结点的单链表中删除(一个)最小值结点的(高效)算法。void delete (Linklist &L )10.已知非空线性链表由list指出,链结点的构造为(data,link ). 请写一算法,将链表中数据域值最小的那个链结点移到链表的最前面。要求:不得额外申请新的链结点。【北京航空航天大学2001四(10分)】11.已知p指向双向循环链表中的一个结点,其结点结构

5、为 data、 llink、rlink 三个域,写出算法change(p),交换p所指向的结点和 它的前缀结点的顺序。12.线性表(a1,a2,a3,an)中元素递增有序且按顺序存储于计算 机内。要求设计一算法完成:(1)用最少时间在表中查找数值为x的元素。(2)若找到将其与后继元素位置相交换。(3) 若找不到将其插入表中并使表中元素仍递增有序。 【东北大学1996 三(12 分)13.设单链表的表头指针为h,结点结构由data和next两个域构成, 其中data域为字符型。写出算法dc(h,n),判断该链表的前n个字符 是否中心对称。例如xyx, xyyx 都是中心对称。14.已知两个单链表

6、A和B,其头指针分别为heada和headb,编写一 个过程从单链表A中删除自第i个元素起的共len个元素,然后将单 链表A插入到单链表B的第j个元素之前。15.设线性表存于A1.size的前num各分量中,且递增有序。请 设计一个算法,将x插入到线性表的适当位置上,以保持线性表的有 序性,并在设计前说明设计思想,最后说明所设计算法的时间复杂度。16假设一个单循环链表,其结点含有三个域 pre、data、link。其 中data为数据域;pre为指针域,它的值为空指针(NIL); link为 指针域,它指向后继结点。请设计算法,将此表改成双向循环链表。17.已知递增有序的单链表A,B分别存储了

7、一个集合,请设计算法以 求出两个集合A和B的差集A-B(即仅由在A中出现而不在B中出现 的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。18.已知一个单链表中每个结点存放一个整数,并且结点数不少于2, 请设计算法以判断该链表中第二项起的每个元素值是否等于其序号 的平方减去其前驱的值,若满足则返回 ture,否则返回false.19.两个整数序列A=a1,a2,a3,am和B=b1,b2,b3,bn已经存入 两个单链表中,设计一个算法,判断序列 B是否是序列A的子序列。【东北大学1999二(10分)】20.已知三个带头结点的线性链表 A、B和C中的结点均依元素值自小至大非递减

8、排列(可能存在两个以上值相同的结点),编写算法对 A表进行如下操作:使操作后的链表 A中仅留下三个表中均包含的数据元素的结点,且没有值相同的结点,并释放所有无用结点。限定 算法的时间复杂度为O (m+n+p),其中m、n和p分别为三个表的长 度。21.请写一个算法将顺序存储结构的线性表( a1.an )逆置为(an.a1)。【大连海事大学1996八(6分)22.设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:(1)找出最小值结点,且打印该数值;(2)若该数值是奇数,则将其与直接后继结点的数值交换;(3)若该数值是偶数,则将其直接后继结点删除。【东北大学2000二(15 分)2

9、3.已知L为没有头结点的的单链表中第一个结点的指针, 每个结点数据域存放一个字符,该字符可能是英文字母字符或数字字符或其它 字符,编写算法构造三个以带头结点的单循环链表表示的线性表, 使每个表中只含同一类字符。(要求用最少的时间和最少的空间)24.在一个递增有序的线性表中,有数值相同的元素存在。若存储方 式为单链表,设计算法去掉数值相同的元素,使表中不再有重复的元 素。例如:(7, 10, 10, 21, 30, 42, 42, 42, 51, 70)将变作(7, 10, 21, 30, 42, 51, 70),分析算法的时间复杂度。25.在输入数据无序的情况下,建立一个数据值为整型的递增有序

10、的 顺序存储线性表L,且要求当输入相同数据值时,线性表中不能存在 数据值相同的数据元素,试写出其算法。顺序存储结构的线性表描述为:CONST maxlen=线性表可能达到的最大长度;TYPE sqlisttp二RECORDlast :0.maxle nEND;VAR L: sqlisttp;26.设有一个正整数序列组成的有序单链表(按递增次序有序,且允许有相等的整数存在),试编写能实现下列功能的算法 :(要求用最少的时间和最小的空间)(1) 确定在序列中比正整数x大的数有几个(相同的数只计算一次,如序列20,20,17,16,15,15,11,10,8,7,7,5,4 中比 10 大的数有 5

11、 个);(2) 在单链表将比正整数x小的数按递减次序排列; 将正整数(比)x大的偶数从单链表中删除。【东北大学2001二 (17分)】27.编写一个算法来交换单链表中指针 P所指结点与其后继结点,HEAD是该链表的头指针,P指向该链表中某一结点。【吉林大学2001 二、1 (7分)】28. 设键盘输入n个英语单词,输入格式为n, w1, w2,wn,其中 n表示随后输入英语单词个数,试编一程序,建立一个单向链表,实现:(10分)(1) 如果单词重复出现,则只在链表上保留一个。 (单考生做)。(2) 除满足(1)的要求外。链表结点还应有一个计数域,记录该单 词重复出现的次数,然后输出出现次数最多

12、的前 k(k=n)个单词(统 考生做)。【南京航空航天大学1998九(10分)】29 .已知一双向循还链表,从第二个结点至表尾递增有序, (设a1xan)如下图(“第二个结点至表尾”指a1.an ,因篇幅所限, 编者略去图)。试编写程序,将第一个结点删除并插入表中适当位置, 使整个链表递增有序。【南京航空航天大学1998 八( 10分)】30.已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度 为0(n)、空间复杂度为0(1)的算法,该算法删除线性表中所有值为 item的数据元素。(0( 1)表示算法的辅助空间为常量)。31.设民航公司有一个自动预订飞机票的系统, 该系统中有一张用双重链

13、表示的乘客表,表中结点按乘客姓氏的字母序相链。例如,下面 是张某个时刻的乘客表。试为该系统写出一个当任一乘客要订票时修 改乘客表的算法。序号 data Lli nk Rli nk1Liu 6 52Cha n 4 93Wang 5 75Mai 136Dong817Xi 308Deng969Cua ng2832.设有一头指针为L的带有表头结点的非循环双向链表, 其每个结 点中除有pred (前驱指针),data (数据)和next (后继指针)域外, 还有一个访问频度域freq。在链表被起用前,其值均初始化为零。每当在链表中进行一次Locate(L,x)运算时,令元素值为x的结点中 freq域的值

14、增1,并使此链表中结点保持按访问频度非增(递减)的 顺序排列,同时最近访问的结点排在频度相同的结点的最后, 以便使频繁访问的结点总是靠近表头。试编写符合上述要求的 Locate(L,x)运算的算法,该运算为函数过程,返回找到结点的地址,类型为指针 型。33 .给定(已生成)一个带表头结点的单链表,设head为头指针,结 点的结构为(data,next),data 为整型元素,next为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的 存储空间。(要求;不允许使用数组作辅助空间)34.已知三个带头结点的线性链表 A B和C中的结点均依元素值自小至大非递减排列(可能存在两

15、个以上值相同的结点),编写算法对 A表进行如下操作:使操作后的链表 A中仅留下三个表中均包含的数 据元素的结点,且没有值相同的结点,并释放所有无用结点。限定算 法的时间复杂度为0(m+n+p,其中m n和p分别为三个表的长度。35.试编写算法将线性表就地逆置。分别以顺序存储结构和链式存储 结构实现。36.己知两个线性表A , B均以带头结点的单链表作存储结构,且 表中元素按值递增有序排列。设计算法求出A与B的交集C,要求C 另开辟存储空间,要求C同样以元素值的递增序的单链表形式存贮, 并计算算法的时间复杂度。37.已知不带头结点的线性链表list,链表中结点构造为(data、link), 其中

16、data为数据域,link为指针域。请写一算法,将该链表按结点数 据域的值的大小从小到大重新链接。要求链接过程中不得使用除该链 表以外的任何链结点空间。38.设键盘输入n个英语单词,输入格式为n, w1, w2,wn,其中n 表示随后输入英语单词个数,试编一程序,建立一个单向链表,实现:(1)如果单词重复出现,则只在链表上保留一个。 (单考生做)。(2)除满足(1)的要求外。链表结点还应有一个计数域,记录该单 词重复出现的次数,然后输出出现次数最多的前 k(k=n)个单词(统考生做)。39.两个整数序列 A=a1,a2,a3,月和B=b1,b2,b3,brB经存入两 个单链表中,设计一个算法,判断序列 B是否是序列A的子序列。40.设有一个由正整数组成的无序(向后)单链表,编写完成下列功 能的算法:(1)找出最小值结点,且打印该数值;(2)若该数值是奇数,则将其与直接后继结点的数值交换;(3)若该数值是偶数,则将其直接后继结点删除。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1