(最新完整版)数据结构复习题(附答案).docVIP

(最新完整版)数据结构复习题(附答案).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、算法设计题 (每题 15 分,共 60 分)答题要求: ①用自然语言说明所采用算法的思想; ②给出每个算法所需的数据结构定义,并做必要说明; ③写出对应的算法程序,并做必要的注释。 1、有一个带头结点的单链表,每个结点包括两个域,一个是整型域  info ,另一个是指向下 一个结点的指针域 next 。假设单链表已建立,设计算法删除单链表中所有重复出现的结点, 使得 info 域相等的结点只保留一个。 3、约瑟夫环问题( Josephus问题)是指编号为  1、 2、? , n 的 n( n0)个人按顺时针方向 围坐成一圈,现从第 s 个人开始按顺时针方向报数,数到第 m 个人出列,然后从出列的下 一个人重新开始报数,数到第 m 的人又出列, ? ,如此重复直到所有的人全部出列为止。 现要求采用循环链表结构设计一个算法,模拟此过程。 4、编程实现单链表的就地逆置。 23.在数组 A[1..n] 中有 n 个数据,试建立一个带有头结点的循环链表,头指针为 h,要求 链中数据从小到大排列,重复的数据在链中只保存一个 . 5、设计一个尽可能的高效算法输出单链表的倒数第 K 个元素。 3、假设以 I 和 O 分别表示入栈和出栈操作。栈的初态和终态均为空,入栈和出栈的操作序 列可表示为仅由 I 和 O 组成的序列, 称可以操作的序列为合法序列, 否则称为非法序列。( 15 分) ( 1)下面所示的序列中哪些是合法的? A. IOIIOIOO B. IOOIOIIO C. IIIOIOIO D. IIIOOIOO ( 2)通过对( 1)的分析,写出一个算法,判定所给的操作序列是否合法。若合法,返回 true,否则返回 false(假定被判定的操作序列已存入一维数组中) 。 5、设从键盘输入一整数的序列: a1, a2, a3,?, an, 试编写算法实现:用栈结构存储输入的整数,当 ai ≠ -1 时,将 ai 进栈;当 ai=-1 时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的信息。 设有一个背包可以放入的物品重量为 S,现有 n 件物品,重量分别为 W1, W2, ... ,Wn。问能 否从这 n 件物品中选择若干件放入背包, 使得放入的重量之和正好是 S。设布尔函数 Knap(S, n) 表示背包问题的解, Wi (i=1,2,... ,n) 均为正整数,并已顺序存储 地在数组 W中。请在下 列算法的下划线处填空,使其正确求解背包问题。 Knap(S, n)若 S=0 则 Knap← true 否则若( S0)或 (S0 且 n1)则 Knap← false 否则若 Knap(1) , _=true 则 print(W[n]) ;Knap ← true 否则 Knap ← Knap(2) _ , _ 设有一个顺序栈 S,元素 s1, s2, s3, s4, s5, s6依次进栈,如果 6 个元素的出栈顺序为  s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?画出具体进栈、出栈过程。 假定采用带头结点的单链表保存单词, 当两个单词有相同的后缀时, 则可共享相同的后缀存 储空间。例如: str1 s t r i n g str2 b e 设 str1 和 str2 是分别指向两个单词的头结点, 请设计一个尽可能的高效算法, 找出两个单 词共同后缀的起始位置,分析算法时间复杂度。 将 n(n1) 个整数存放到一维数组 R 中。设计一个尽可能高效(时间、空间)的算 法,将 R 中保存的序列循环左移 p( 0pn )个位置,即将 R 中的数据( x0 , x 1, x2 ,? , xn-1), 变换为 (xp, xp+ 1, ? , xn-1 ,x0 , x1,? , xp-1)。 4.编写一个过程, 对一个 n× n 矩阵,通过行变换, 使其每行元素的平均值按递增顺序排列。 7.给定一个整数数组 b[0..N-1] ,b 中连续的相等元素构成的子序列称为平台。 试设计算法, 求出 b 中最长平台的长度。 【 8. 给定 nxm 矩阵 A[a..b,c..d],  并设 A[i,j]  ≤A[i,j+1](a  ≤ i ≤ b,c ≤ j ≤ d-1) 和 A[i,j]  ≤ A[i+1,j](a ≤ i ≤ b-1,c ≤ j ≤ d). 设计一算法判定 X 的值是否在 A 中 , 要求时间复杂度为 O(m+n)。【 22. 给定有 m个整数的递增有序数组  a[1..m] 和有 n 个整数的递减有序数组  b[1..n] ,试写 出

文档评论(0)

冬天一把火 + 关注
实名认证
文档贡献者

夏天的一块冰

1亿VIP精品文档

相关文档