数据结构实验指导_第1页
数据结构实验指导_第2页
数据结构实验指导_第3页
数据结构实验指导_第4页
数据结构实验指导_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构实验指导书上海电力学院信控系目录1. 关于实习步骤的要求和建议2. 上机实习数据结构实习一数据结构实习二数据结构实习三数据结构实习四数据结构实习五数据结构实习六数据结构实习七3. 注意事项1 关于实习步骤的要求和建议从以往的教学事先实习的经验来看,在初学阶段执行严格的实习步骤规范(包括上机操作规范),机时利用率会大大提高,有助于养成良好的程序编制风格,培养严谨、科学、高效的工作方式。在以往的教学实践中,经常发现很多学生抱怨说,化了两个小时才找出一个错误,甚至一无所获。他们不明白造成这种情况的原因,正是他们自己。有的学生不屑于按实习步骤规范去做,甚至对于实习步骤的要求和建议看都不看一遍,认为那是浪费时间,这是及其害的。实习步骤规范不但可以培养科学化的工作作风,而且还能有效地避免错误。具体的步骤机规范如下:1 问题分析与系统的结构设计: 充分地分析和理解问题本身,弄清要求作什么,限制条件是什么。按照以数据结构为中心的原则划分模块,即定义数据结构及其在这些结构之上的操作,使得对数据结构的存取通过这些操作加以实现。在这个过程中,要综合考虑系统功能。要考虑系统结构清晰、合理、简单并且易于调试。最后写出每个子程序(过程或函数)的规格说明,列出它们之间的调用关系,可以使用调用关系图表示则更加清晰,这样便完成了系统结构设计。2 详细设计和编码详细设计的目的是对子程序(过程或函数)的进一步求精。用 IF 、WHILE和赋值语句等,以及自然语言写出算法的框架。利用自然语言的目的是避免陷入细节。在编码是,可以对详细设计的结果进一步求精,用高级语言表示出来。程序的每一行最好不超过 60 个字符。每个子程序(或过程、函数)通常不要太长,以 40 行为宜。子程序(或过程、函数)包含的程序行数太多,易于造成理解的困难。控制 IF 、WHILE 等语句的连续嵌套的深度。程序的目的性必须明确。对每一段程序完成的作用,除非常明显的除外(如:x = x + 1; 注释为 x 加 1,没有什么意义),都应加以注释。这会对程序的调试提供很多方便。另外,根据情况可以设立若干调试点,即输出若干信息,用于验证和你的设想是否一致。另外,对于输入输出语句,必须对它们的作用加以说明。否则,在调试程序时,无法了解系统需要输入说明,系统输出的又是什么。程序的书写,必须按照一定的规范,如保留字小写时涂黑,或者大写等等。具体的要求可参看软件工程中的有关规定。3 上机准备和静态检查上机准备:l 高级语言文本l 熟悉机器的用户手册,熟悉常用的命令。l 准备调试的工具,考虑调试方案。如果机器上没有现成的调试工具可供利用,可以自己先设计一些以供使用。l 静态检查自己用一组数据手动执行程序;或同同学一起阅读自己的程序,以全面地了解该程序的逻辑。4 上机调试程序自底向上,先调试底层模块,再调试上层模块。最后,整个程序进行联调。调试正确后将源程序和运行结果加以列印输出。5 实习报告的整理l 需求及规格说明问题描述,求解的问题是什么。l 设计:设计思想:存储结构、主要的算法思想。设计表示:子程序(过程或函数)的规格说明,通过调用关系图表 示它们之间的调用关系。实现注释:详细设计表示:主要算法的框架。l 用户手册:使用说明。l 调试报告:问题是如何解决的,讨论与分析、改进设想、经验与体会、时空复杂度等。l 附录源程序清单和结果:源程序必须有注释,以及必要的测试数据和运行结果数据。提倡用英文描述。l 实验报告要求:在程序开发过程中,逐步形成各种必要的文档及资料。可以写在实验报告纸上,或以电子文档的形式进行书写。2 上机实习 以下的实习题目配合课程的进度,请同学们自己务必完成。为了锻炼自己的应用各种不同的数据结构的能力,尽可能的多作一些题目是非常必要的。在完成各种不同题目的过程中,对各种算法的时、空复杂性的分析,将帮助您在更高的角度解决各种应用问题。数据结构实习一1。在计算机上以字符串的形式输入一个表达式,如:ABC/D + EF. 假定该表达式只有 +, ,/ , 及 ()运算. 请: 1。先将该表达式变成后缀形式; 2。计算该表达式之值。2。已知 ACKERMAN 函数的定义如下: N +1 IF M=0 AKM (M,N) = AKM(M - 1, 1) IF M != 0 & N = 0 AKM(M-1, AKM(M, N1) IF M != 0 & N != 0 请写出计算 该函数的非递归程序3。 在计算机上以字符串的形式输入了两个任意长的整数,请编写求这两个整 数的积 的 程序。数据结构实习二1。设有一个双链表, 每个结点中除有 PRIOR,NEXT 及 DATA可设为 正整数 三个域之外,还有一个专门记录访问该结点次数的数据域 FREQ ,其值在初始化时为零。每当在链表中进行一次 SEACHL,KEY 时,则数据域 DATA 之值等于 KEY 的结点,其 FREQ 域之值将加一。并使该双链表中结点按 FREQ 之值的递减顺序排列,FREQ 值越大的结点越靠近表头。 请编写符合上述要求的 SEACHL,KEY 程序。2。请写出计算两个以 单链接表表示的多项式相乘的程序。3。在计算 机 上先输入一串正整数的序列。请编写一个程序,首先用链接表 存储该序列。然后执行删除操作,即先从链表中找出最小的结点,删除它 。然后再在剩余的链表中,找出最小的结点,再删除之。直至表空为止。数据结构实习三1 在计算 机 上先输入两个正整数 N 和K ,其中 N 为将要输入的正整数的个 数,K 为步长。请编写一个程序,首先用循环链接表储存这 N 个正整数。 然后,首先删除第一个正整数,接着删除第 K 1 个正整数,依次类推,直至表空为止。如下所示,N = 10, K = 3,输入的 10 个正整数为 1,2,3,4,5,6,7,8,9,10。则被删除的次序为:1,4,7,10,5,9,6,3,8,2。2。假设有 N 个栈共同使用一块顺序存储的空间,为简单起见可设为共同使用 数组 int a200。初始状态为各栈等分备用空间。每当有某栈上溢时, 按下述方法调整各栈的备用空间;将全部备用空间的 X 均分给各栈,其 余 (100 - X)% 按上一次调整以来各栈的增长的比例分配给各栈,请给 出这 N 个栈的出、入栈算法。3。参见教科书第 130 页习题43。请问:a. 如进栈的车厢的序列为 1、2、3、4, 则出栈的序列有那些种?b. 给出当进栈的车厢的序列为 1、2、3、4、N 时,所有出栈的序列的程序。4。假设以带头结点的循环链接表表示队列,并且只设一个指向队尾结点的指 针,请给出进出队的完整的程序。5。 假设有 二 个栈共同使用一块顺序存储的空间,为简单起见可设为共同使 用数组 int a200。它们的栈底分别设在数组的两端,而栈顶指针在进 行插 入操作时,向中间方向移动。请给出进出栈的程序。6给出在主串中搜索所有模式(如模式 P AABBAAB) 的程序,包括重叠及不重叠两种情况。数据结构实习四1。在计算机上首先输入前序及中序周游一棵二叉树的结果,为简单起见可以假 定该二叉树的结点的数据场之值仅为一大写英文字母。请给出该二叉树的后序周游结果,并以链接形式存储该二叉树。2。两棵二叉树称作相似的,它们要么全为空。要么不是空树但它们的左子树相似且右子树相似。请设计一个程序判断两棵二叉树是否相似。3给定 N 个不同的正整数,设计一个程序,找出这些正整数的所有的组合,要求在每一种组合之中,各数的累加和等于一个给定的正整数 M 。如给定 M 30 及六个正整数(5,10,12,13,15,18 );则符合条件的组合是(12,18),(5,10,15),(5,12,13)。4请编写一个程序,确定二叉树的特征。如:每个节点的层次,从根到该节点的枝长(路径长度),子孙的个数及祖先的个数。每个节点在前序、中序、后序中的访问的序号。5用标准形式给出了一棵三次树(每个节点包含数据场、指向儿子节点的指针场),设该三次树的数据场的值为一个字符,情编写一个程序,以树的两维形式表示打印节点的值。 数据结构实习五1 以 数 偶 的 形 式 输 入 一 串 数 据。 如:( A,B ) 为 从 起 始 结 点, 其 数 据 场 之 值 为 一 大 写 的 英 文 字 母A, 到 终 止 结 点,其 数 据 场 之 值 为 一 大 写 的 英 文 字 母 B 的 无 向 边。 请 用 无 向 图 的邻 接 多 重 表 存 储 该 无 向 图, 并 注 意 一 定 要 使 用 动 态 存 储 结 构。 如 果 该 数 偶 代 表 有 向 边 的 话,请 用 有 向 图 的 十 字 链 表 存 储 该 有 向 图, 并 注 意 也 要 使 用 动 态 存 储 结 构。2 已 知 一 以 动 态 存 储 结 构 形 式 存 储 的, 以 邻 接 表 表 示 的 有 向 图。 请 求 出 它 的 强 连 通 分 量。3 已 知 一 以 动 态 存 储 结 构 形 式 存 储 的, 以 邻 接 多 重 表 表 示 的 无 向 图。 请 用 KRUSKAL 算 法 求 出 它 的 最 小 代 价 生 成 树。4 已 知 一 以 邻 接 矩 阵 形 式 存 储 的 AOV 图。 请 求 出 它 的 所 有 的 合 理 的 拓 扑 排 序 的 序 列。5 已 知 一 以 动 态 存 储 结 构 形 式 存 储 的, 以 邻 接 多 重 表 表 示 的 无 向 图。 请 编 写 一 个 统 一 的 程 序, 用 以 求 解 最 小 代 价 生 成 树 问 题 及 源 点 至 其 它 顶 点 间 的 最 短 距 离 问 题。可 由 使 用 者 指 明 究 竟 求 解 哪 个 问 题。6 已 知 一 以 动 态 存 储 结 构 形 式 存 储 的, 以 邻 接 表 表 示 的 有 向 图。 请 使 用 非 递 归 的 方 法 编 写 该 有 向 图 的 深 度 及 广 度 优 先 的 遍 历 程 序。 数据结构实习六1、 输 入 一 串 正 整 数 数 据, 最 后 以 1 作 为 结 束 的 标 志。 首 先, 请 建 立 一 棵 排 序 二 叉 树。 然 后, 再 输 入 每 个 结 点 的 权 值, 您 能 否 将 此 树 中 的 结 点 进 行 调 整, 使 得 对 二 叉 树 的 查 找 代 价 最 小, 即 建 立 一 棵 最 佳 查 找 树。2、 已 知 一 以 数 组 形 式 存 储 的 有 序 表。 请 用 FIBONACCI 查 找 法, 编 制 查 找 具 有 给 定 关 键 字 KEY 的 结 点。3、 如 果 在 二 叉 树 的 定 义 中 允 许 出 现 具 有 相 同 关 键 字 的 结 点。试 编 写 以 动 态 存 储 结 构 存 储 的 排 序 二 叉 树 的 插 入 及 删 除 程 序。4、 在 平 衡 的 排 序二 叉 树 的 中,试 编 写 删 除 具 有 给 定 关 键 字 的 结 点 的 程 序。5、作 为 输 入 给 定 的 是 已 分 类 的 数 列:a1,a2,a3, , an, 以 及 随后 的“ 问 题” 序 列:b1,b2,b3, , bn. 请 编 写 一 个 程 序, 首 先 顺 序存 储 数 列a1,a2,a3, , an, 然 后 用 折 半 查 找 法 对 每 个 问 题 bi 找 出使aj 等 于 bi 的 一 切 j , 当 没 有 这样 的j 及 有 多 个 这 样 的j 时, 程 序也 应 能 够 正 常 工 作。 数据结构实习七1、编 写 一 个 程 序, 查 找 未 分 类 序 列 中 第 K 个 最 小 的 元 素, 要 求 使 用 类 似 快 速 分 类 的 算 法。 并 简 单 讨 论 一 下 在 最 坏 情 况 下, 所 耗 费 的 时 间。2、如 果 有17000 个 不 同 的 正 整 数 组 成 的 序 列, 每 个 正 整 数 都 在 0 至19999 之 间。 请 使 用 适 当 的 散 列 函 数, 使 得 将 该 序 列 进 行 分 类 的 时 间 复 杂 性 为 O(N) 级。 注 意 此 处 并 不 限 制 辅 助 内 存 的 多 少。3、写 一 个 利 用 合 并 分 类 法 进 行 排 序 的 非 递 归 程 序。4、奇 偶 分 类。 将 被 分 类 的 序 列 进 行 如 下 操 作。 反 复 进 行 直 至 不 再 进 行 交 换 为 止。第 一 遍: 比 较 x i 同x i+1 ( 对 所 有 奇 数i );第 二 遍: 比 较 x i 同x i+1 ( 对 所 有 偶 数i );每 次 比 较, 如 果 x i x i+1 则 交 换 之, 继 续 这 样 作, 直 至 不 交 换 为 止。1 该 方 法 的 结 束 条 件 如 何?2 写 一 个 C+ 程 序 加 以 实 现。5、作 为 输 入 给 定 的 是 四 个 俱 乐 部 C1,C2,C3,C4 的 未 排 好 次 序 的 成 员 名 单。假 定 各 个 俱 乐 部 的 成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论