

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构课程实验大纲 一、 数据结构课程实验的地位和作用 数据结构是计算机专业一门重要的专业技术基础课程, 是计算机专业的一门核心的 关键性课程。 本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现 算法, 介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程 的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: ( 1) 内容丰富,学习量大,给学习带来困难; ( 2) 贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点; ( 3) 所用到的技术多, 而在此之前的各门课程中所介绍的专业性知
2、识又不多, 因而加 大了学习难度; ( 4) 隐含在各部分的技术和方法丰富,也是学习的重点和难点。 根据数据结构课程课程本身的技术特性,设置数据结构课程实验实践环节十 分重要。 通过实验实践内容的训练, 突出构造性思维训练的特征 , 目的是提高学生组织数据 及编写大型程序的能力。实验学时为 10。 二、数据结构课程实验的目的和要求 不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的 内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到, 只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 为了帮助学生更好地学习本课程,
3、理解和掌握算法设计所需的技术,为整个专业学习打 好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环 节的训练, 使学生深刻理解、 牢固掌握所用到的一些技术。 数据结构中稍微复杂一些的算法 设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码, 递归技术,和特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组 结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。 三、 数据结构课程实验内容 课程实验共 10 学时,要求完成以下五个题目: 实习一 约瑟夫环问题( 2 学时) 用循环链表实现约瑟夫环问题,熟
4、悉链表结构的使用。 实习二 八皇后问题 (2 学时) 在8X8的棋盘上放置彼此不受攻击的 8个皇后,熟悉递归和回溯程序设计方法。 实习三 二叉树基本操作( 2 学时) 创建、遍历、显示二叉树,通过二叉树的基本操作,掌握树结构的处理方法。 实习四 哈夫曼编码和译码 针对字符集A及其各字符的频率值(可统计获得)给出其中给字符哈夫曼编码,并 针对一段文本(定义在 A上)进行编码和译码,实现一个哈夫曼编码 /译码系统。 实习五 最小生成树问题( 2 学时) 在 n 个城市之间建设网络,只需保证连通即可,求最经济的架设方法。 四、 数据结构课程实验考核方式 采用上机情况、程序质量、实习报告相结合的形式,
5、满分为 100 分。 1 上机情况( 30%) 包括出勤情况、调试表现、是否上网、玩游戏。 2 程序质量( 50%) 3 实习报告( 20%) 数据结构课程实验指导书 实习一 线性表 本次实习的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现, 其中以熟悉 各种链表的操作为侧重点。通过本次实习还可帮助读者复习高级语言的使用方法。 1、城市链表 问题描述 将若干城市的信息, 存入一个带头结点的单链表。结点中的城市信息包括:城市名,城 市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。 基本要求 ( 1) 给定一个城市名,返回其位置坐标; (2)给定一个位置坐标
6、 P和一个距离D,返回所有和P的距离小于等于 D的城市。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 2、 约瑟夫环 问题描述 约瑟夫(Joeph)问题的一种描述是:编号为1,2,n的n个人按顺时针方向围坐一圈, 每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值 m,从第一个人开始 按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的 m值,从他在顺时针方向上的下一个人开始重新从 1报数,如此下去,直至所有人全部出列 为止。试设计一个程序求出出列顺序。 基本要求 利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。
7、 测试数据 m的初值为20;密码:3, 1, 7, 2, 4, 8, 4 (正确的结果应为 6, 1, 4, 7, 2, 3, 5)。 实现提示 程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。设 nW 30。 选作内容 向上述程序中添加在顺序结构上实现的部分。 3、 线性表的逆置 问题描述 分别以不同存储结构实现线性表的就地逆置。 线性表的就地逆置就是在原表的存储空间 内将线性表(a1,a2,a3,an)逆置为( an, an-1,a2, al)。 基本要求 用顺序存储结构实现线性表的就地逆置,并将结果输出。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据,如
8、空表。 实现提示 设三个连续的指针,分别指向当前结点、当前结点的前趋、当前结点的后继。 选作内容 利用单链表作为存储结构。 首先先建立线性表的带头结点的单链表表示形式, 之后在不 借助辅助结点空间的情况下实现单链表的逆置,并将结果输出。 4、长整数运算 问题描述 设计一个程序实现两个任意长的整数求和运算。 基本要求 利用双项循环链表实现长整数的存储, 每个结点含一个整型变量。 任何整型变量的范围 是 -(215-1 ) (215-1 )。输入和输出形式:按中国对于长整数的表示习惯,每四位一组, 组间用逗号隔开。 测试数据 (1) 0 ;0;应输出 0。 (2) -2345,6789 ;-765
9、4,3211 ;应输出 -1,0000,0000。 (3) -9999,9999 ;1,0000,0000,0000 ;应输出 9999,0000,0001 。 (4) 1,0001,000 ;-1,0001,0001 ;应输出 0。 (5) 1,0001,0001 ;-1,0001,0000 ;应输出 1。 实现提示 ( 1) 每个结点中可以存放的最大整数为 215-1=32767 ,才能保证两数相加不会溢出。 但若这样存, 即相当于按 32768 进制数存, 在十进制数和 32768 进制数之间的转换十分不方 便。故可以在每个结点中仅存十进制数的 4 位,即不超过 9999 的非负整数,整
10、个链表视为 万进制数。 ( 2) 可以利用头结点数据域的符号代表长整数的符号。 用其绝对值表示元素结点数目。 相加过程中不要破坏两个操作数链表。 两操作数的头指针存于指针数组中是简化程序结构的 一种方法。不能给长整数位数规定上限。 选作内容 修改上述程序,使它在整型量范围是 - ( 2n-1 ) ( 2n-1 )的计算机上都能有效地运行。 其中, n 是由程序读入的参量。输入数据的分组方法可以另行规定。 实习二 栈、队列和递归算法设计 仅仅认识到栈和队列是两种特殊的线性表是远远不够的, 本次实习的目的在于使读者深 入了解栈和队列的特征, 以便在实际问题背景下灵活运用它们; 同时还将巩固这两种结
11、构的 构造方法,接触较复杂问题的递归算法设计。 1 、数制转换问题 问题描述 将十进制数N和其它d进制数的转换是计算机实现计算的基本问题,其解决方案很多, 其中最简单方法基于下列原理:即除 d 取余法。例如: (1348)10=(2504)8 N N div 8 N mod 8 1348 168 4 168 21 0 21 2 5 2 0 2 从中我们可以看出, 最先产生的余数 4 是转换结果的最低位, 这正好符合栈的特性即后 进先出的特性。所以可以用顺序栈来模拟这个过程。 基本要求 对于键盘输入的任意一个非负的十进制整数, 打印输出和其等值的八进制数。 由于上述 的计算过程是从低位到高位顺序
12、产生的八进制数的各个数位, 而打印输出, 一般来说应从高 位到地位进行, 恰好和计算过程相反。 因此可以先将计算过程中得到的八进制数的各位进栈, 待相对应的八进制数的各位均产生以后, 再使其按顺序出栈, 并打印输出。 即得到了和输入 的十进制数相对应的八进制数。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 2、回文判断 问题描述 试写一个算法,判断依次读入的一个以 为结束符的字母序列,是否为形如序列 1 & 序列 2模式的字符序列。其中序列 1和序列 2 中都不含字符 &,且序列 2 是序列 1 的逆序列。例如, a+b&b+a是属该模式的字符序
13、列,而1 +3 &3 1则不是。 实现提示 首先,序列 1 进栈,然后序列 1 出栈并和序列 2 比较。 测试数据 由学生依据软件工程的测试技术自己确定。 注意测试边界数据, 如序列 1 和序列 2均为 空串。 3、商品货架管理 问题描述 商品货架可以看成一个栈, 栈顶商品的生产日期最早, 栈底商品的生产日期最近。 上 货时,需要倒货架,以保证生产日期较近的商品在较下的位置。 基本要求 针对一种特定商品,实现上述管理过程。 实现提示 用栈模拟货架和周转空间。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据,如空栈。 4、括号匹配的检验 问题描述 假设表达式中允许有两种
14、括号:圆括号和方括号,其嵌套的顺序随意,即( () )或 ( )等为正确格式, ( )或(均为不正确的格式。检验括号是否匹配的方 法可用期待的紧迫程度这个概念来描述。例如:考虑下列的括号序列: ( ) 1 2 3 4 5 6 7 8 当计算机接受了第 1 个括号以后, 他期待着和其匹配的第 8 个括号的出现, 然而等来的 却是第 2个括号,此时第 1个括号 只能暂时靠边, 而迫切等待和第 2 个括号相匹配的 第 7 个括号)的出现,类似的,因只等来了第 3 个括号 ,此时,其期待的紧迫程度 较第2个括号更紧迫, 则第2个括号只能靠边, 让位于第 3个括号,显然第 3个括号的期待 紧迫程度高于第
15、 2 个括号,而第 2 个括号的期待紧迫程度高于第 1 个括号;在接受了第 4 个括号之后, 第 3个括号的期待得到了满足, 消解之后, 第 2个括号的期待匹配就成了最急 迫的任务了,依次类推。可见这个处理过程正好和栈的特点相吻合。 基本要求 读入圆括号和方括号的任意序列,输出匹配或此串括号匹配不合法。 测试数据 输入( (),结果匹配 输入 ( ) ,结果此串括号匹配不合法 实现提示 设置一个栈,每读入一个括号,若是左括号,则作为一个新的更急迫的期待压入栈中; 若是右括号, 并且和当前栈顶的左括号相匹配, 则将当前栈顶的左括号退出, 继续读下一个 括号, 如果读入的右括号和当前栈顶的左括号不
16、匹配, 则属于不合法的情况。 在初始和结束 时,栈应该是空的。 选作内容 考虑增加大括号的情况。 5、停车场管理 问题描述 设停车场内只有一个可停放 n 辆汽车的狭长通道, 且只有一个大门可供汽车进出。 汽车 在停车场内按车辆到达时间的先后顺序, 依次由北向南排列 (大门在最南端, 最先到达的第 一辆车停放在车场的最北端) ,若车场内已停满 n 辆汽车,则后来的汽车只能在门外的便道 上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时, 在它之后开入的车辆必须先退出车场为它让路, 待该辆车开出大门外, 其它车辆再按原次序 进入车场, 每辆停放在车场的车在它离开停车场时
17、必须按它停留的时间长短交纳费用。 试为 停车场编制按上述要求进行管理的模拟程序。 测试数据 设 n=2,输入数据为:( A, 1,5), ( A, 2, 10), ( D, 1 , 15) , ( A, 3, 20), ( A, 4, 25),( A, 5, 30),( D, 2, 35),( D, 4, 40),( E, 0, 0)。每一组输入数据包括三个数据项: 汽车到达或离去信息、 汽车牌照号码及到达 或离去的时刻,其中, A表示到达;D表示离去,E表示输入结束。 基本要求 以栈模拟停车场, 以队列模拟车场外的便道, 按照从终端读入的输入数据序列进行模拟 管理。 每一组输入数据包括三个数
18、据项: 汽车到达或离去信息、 汽车牌照号码及到 达或离去的时刻, 对每一组输入数据进行操作后的输出数据为: 若是车辆到达, 则输出汽车 在停车场内或便道上的停车位置; 若是车离去; 则输出汽车在停车场内停留的时间和应交纳 的费用(在便道上停留的时间不收费) 。栈以顺序结构实现,队列以链表实现。 实现提示 需另设一个栈, 临时停放为给要离去的汽车让路而从停车场退出来的汽车, 也用顺序存 储结构实现。 输入数据按到达或离去的时刻有序。 栈中每个元素表示一辆汽车, 包含两个数 据项:汽车的牌照号码和进入停车场的时刻。 选作内容 ( 1) 两个栈共享空间,思考应开辟数组的空间是多少? ( 2) 汽车可
19、有不同种类,则它们的占地面积不同,收费标准也不同,如 1 辆客车和 1.5 辆小汽车的占地面积相同, 1 辆十轮卡车占地面积相当于 3 辆小汽车的占地面积。 ( 3) 汽车可以直接从便道上开走, 此时排在它前面的汽车要先开走让路,然后再依次 排到队尾。 ( 4) 停放在便道上的汽车也收费, 收费标准比停放在停车场的车低, 请思考如何修改 结构以满足这种要求。 实习三 串及其使用 本次实习的目的是熟悉串类型的实现方法和文本模式匹配方法, 熟悉一般文字处理软件 的设计方法, 较复杂问题的分解求精方法, 在第二次实习的基础上, 进一步强化这样一个观 念:程序是数据结构结合定义在其上的操作, 此外还希
20、望起到训练合作能力和熟悉文件操作 的目的。本次实习的难度较大。 1、文学研究助手 问题描述 文学研究人员需要统计某篇英文小说中某些形容词的出现次数和位置。 试写一个实现这 一目标的文字统计系统,称为文学研究助手。 基本要求 英文小说存于一个文本文件中。 待统计的词汇集合要一次输入完毕, 即统计工作必须在 程序的一次运行之后就全部完成。 程序的输出结果是每个词的出现次数和出现位置所在行的 行号,格式自行设计。 测试数据 以你的源程序模拟英文小说,程序语言保留字集作为待统计的词汇集。 实现提示 设小说中的词汇一律不跨行。这样,每读入一行,就统计每个词在这行中的出现次数。 出现位置所在行的行号可以用
21、链表存储。 若某行中出现了不止一次, 不必存多个相同的行号。 如果读者希望达到选作部分(1 )和(2)所提出的要求,则首先应把 KMP算法改写成如 下的等价形式,再将它推广到多个模式的情形。 选作内容 (1)模式匹配要基于 KMP算法。 ( 2) 整个统计过程中只对小说文字扫描一遍以提高效率。 ( 3) 假设小说中的每个单词或者从行首开始,或者前置以一个空格符。利用单词匹配 特点另写一个高效的统计程序,和 KMP算法统计程序进行效率比较。 ( 4) 推广到更一般的模式集匹配问题,并设待查模式串可以跨行(提示:定义操作 getachar ) 2、简单行编辑程序 问题描述 文本编辑程序是利用计算机
22、进行文字加工的基本软件工具, 实现对文本文件的插入、 删 除等修改操作。限制这些操作以行为单位进行的编辑程序称为行编辑程序。 被编辑的文本文件可能很大,全部读入编辑程序的数据空间(内存)的做法既不经济, 也不总能实现。 一种解决方法是逐段地编辑。 任何时刻只把待编辑文件的一段放在内存, 称 为活区。 试按照这种方法实现一个简单的行编辑程序。 设文件每行不超过 320 个字符, 很少 超过 80 字符。 基本要求 实现以下 4 条基本编辑命令: (1) 行插入。格式: i 行号回车文本回车 将文本 插入活区中第 行号行之后 (2) 行删除。格式:d行号1 行号2回车 删除活区中第 行号1行(到第
23、 行号2行)。两种格式的例子是: d10/和 d10口 14/ (3) 活区切换。格式: *回车 将活区写入输出文件,并从输入文件中读入下一段,作为新的活区。 (4) 活区显示。格式:p回车 逐页地(每页 20 行)显示活区内容,每显示一页之后请用户决定是否继续显示以后各 页(如果存在) 。印出的每一行要前置以行号和一个空格符,行号固定占 4位,增量为 1。 各条命令中的行号均须在活区中各行行号范围之内, 只有插入命令的行号可以等于活区 第一行行号减 1,表示插入当前屏幕中第一行之前,否则命令参数非法。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据,如首行、尾行。 实现提示
24、 (1) 设活区的大小用行数 activemaxlen (可设为 100)来描述。考虑到文本文件行长 通常为正态分布,且峰值在60到70之间,用320 x activemaxlen 大小的字符数组实现存储 将造成大量浪费。可以以标准行块为单位为各行分配存储,每个标准行块含 81 个字符。这 些行块可以组成一个数组, 也可以利用动态链表连接起来。 一行文字可能占多个行块。 行尾 可用一个特殊的 ASCII 字符(如 (012)8 )标识。此外,还应记住活区起始行号。行插入将引 起随后各行行号的顺序下推。 ( 2) 初始化过程包括: 请用户提供输入文件名 (空串表示无输入文件) 和输出文件名, 两
25、者不能相同。然后尽可能多地从输入文件中读入各行, 但不超过activemaxlen-x x的值 可以自定,例如 20。 ( 3) 在执行行插入命令的过程中,每接收到一行时到要检查活区大小是否已达 activemaxlen 。如果是,则为了在插入这一行之后仍保持活区大小不超过 activemaxlen , 应将插入点之前的活区部分中第一行输出到输出文件中; 若插入点为第一行之前, 则只得将 新插入的这一行输出。 ( 4) 若输入文件尚未读完,活区切换命令可将原活区中最后几行留在活区顶部, 以保 持阅读连续性;否则,它意味着结束编辑或开始编辑另一个文件。 ( 5) 可令前三条命令执行后自动调用活区
26、显示。 选作内容 ( 1 ) 对于命令格式非法等一切错误作严格检查和适当处理。 (2) 加入更复杂的编辑操作,如对某行进行串替换;在活区内进行模式匹配等,格式 可以为S亍号串1串 2回车和口串 回车。 实习四 树、图及其使用 树和图是两种使用极为广泛的数据结构, 也是这门课程的重点。 它们的特点在于非线性。 广义表本质上是树结构;稀疏矩阵的十字链表存储结构也是图的一种存储结构, 故也把它们 归在这次实习中。本章实习继续突出了数据结构加操作的程序设计观点, 但根据这两种结构 的非线性特点,将操作进一步集中在遍历操作上, 因为遍历操作是其他众多操作的基础。 遍 历逻辑的(或符号形式的)结构,访问动
27、作可是任何操作。本次实习还希望达到熟悉各种存 储结构的特征,以及如何使用树和图结构解决具体问题(即原理和使用的结合)等目的。 1、二叉树的建立和遍历 问题描述 建立一棵二叉树,并对其进行遍历(先序、中序、后序) ,打印输出遍历结果。 基本要求 从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立) ,并 采用递归算法对其进行遍历(先序、中序、后序) ,将遍历结果打印输出。 测试数据 ABG DE F (其中表示空格字符) 则输出结果为先序:ABCDEGF 中序:CBEGDFA 后序:CGBFDBA 选作内容 采用非递归算法实现二叉树遍历。 2、打印树结构 问题描述 按凹入表
28、形式打印树形结构。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据,如空树。 实现提示 (1) 利用树的先根遍历方法; (2) 禾U用结点的深度控制横向位置。 3、哈夫曼编码/译码器 【问题描述】 设计一个利用哈夫曼算法的编码和译码系统, 止。 C F E A D B 重复地显示并处理以下项目,直到选择退出为 【基本要求】 (1) 初始化:键盘输入字符集大小 n、n个字符和n个权值,建立哈夫曼树; (2) 编码:利用建好的哈夫曼树生成哈夫曼编码; (3) 输出编码; (4) 设字符集及频度如下表: 字符 空格 A B C D E F G H I J K L M 频度 186
29、64 13 22 32 103 21 15 47 57 1 5 32 20 字符 N O P Q R S T U V W X Y Z 频度 57 63 15 1 48 51 80 23 8 18 1 16 1 【选做内容】 (1) 译码功能; (2) 显示哈夫曼树; (3) 界面设计的优化。 4、图遍历的演示 问题描述 很多涉及图上操作的算法都是以图的遍历操作为基础的。 试写一个程序, 演示无向图的 遍历操作。 基本要求 以邻接表为存储结构, 实现连通无向图的深度优先和广度优先遍历。 以用户指定的结点 为起点,分别输出每种遍历下的结点访问序列和相应生成树的边集。 测试数据 由学生依据软件工程的
30、测试技术自己确定。注意测试边界数据,如单个结点。 实现提示 设图的结点不超过 30 个,每个结点用一个编号表示(如果一个图有 n 个结点,则它们 的编号分别为1,2,n )。通过输入图的全部边输入一个图,每个边为一个数对,可以对边 的输入顺序作出某种限制。注意,生成树的边是有向边,端点顺序不能颠倒。 选作内容 (1) 借助于栈类型(自己定义和实现)将深度优先遍历用非递归算法实现。 ( 2) 以邻接多重表为存储结构建立深度优先生成树和广度优先生成树, 再按凹入表或 树形打印生成树 (3) 实现有向图的遍历操作。 实习五 查找和排序 本次实习旨在集中对几个专门的问题作较为深入的探讨和理解, 不强调
31、对某些特定的编 程技术的训练。 1 、二叉排序树 问题描述 从键盘读入一组数据, 建立二叉排序树并对其进行查找、 遍历、格式化打印等有关操作。 基本要求 建立二叉排序树并对其进行查找,包括成功和不成功两种情况,并给出查找长度。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 选作内容 实现二叉排序树的插入、删除操作。 2、哈希表设计 问题描述 针对某个集体中人名设计一个哈希表,使得平均查找长度不超过 R,并完成相应的建表 和查表程序。 基本要求 假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有 30 个,取平均查找 长度的上限为 2。哈希函数用除留余数法构造,用线
32、性探测再散列法或链地址法处理冲突。 测试数据 取读者周围较熟悉的 30 个人名。 选作内容 (1) 从教科书上介绍的集中哈希函数构造方法中选出适用者并设计几个不同的哈希函 数,比较他们的地址冲突率(可以用更大的名字集合作实验) 。 (2) 研究这 30 个人名的特点,努力找一个哈希函数,使得对于不同的拼音名一定不 发生地址冲突。 (3) 在哈希函数确定的前提下尝试各种不同处理冲突的方法, 考察平均查找长度的变 化和造好的哈希表中关键字的聚集性。 3、内部排序算法比较 问题描述 各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时 间。试通过随机的数据比较各算法的关键字比较
33、次数和关键字移动次数,以取得直观感受。 基本要求 (1) 对以下 10 种常用的内部排序算法进行比较:直接插入排序;折半折入排序;二 路插入排序;希尔排序;起泡排序;快速排序;简单选择排序;堆排序;归并排序;基数排 序。 (2) 待排序表的表长不少于 100;其中的数据要用伪随机数产生程序产生;至少要用 5 组不同的输入数据作比较;比较的指标为有关键字参加的比较次数和关键字移动次数(关 键字交换计为 3 次移动)。 测试数据 由随机产生器决定。 实现提示 主要工作是设法在程序中适当的地方插入计数操作。 程序还可以包括计算几组数据得出 结果波动大小的解释。注意分块调试的方法。 选作内容 对不同的
34、输入表长做试验, 观察检查两个指标相关于表长的变化关系。 还可以对稳定性 做验证。 3、统计成绩 问题描述 给出n个学生的m门测试的成绩表,每个学生的信息由学号、姓名以及各科成绩组成。 对学生的测试成绩进行有关统计,并打印统计表。 基本要求 (1) 按总数高低次序,打印出名次表,分数相同的为同一名次; (2) 按名次打印出每个学生的学号、姓名、总分以及各科成绩。 测试数据 由学生依据软件工程的测试技术自己确定。注意测试边界数据。 选作内容 对各科成绩设置不同的权值。 附录 2 实验报告示例 _ 级 _ 班 _ 年 月 日 姓 名 _ 学号 _ 电话 _ 1实验题目 编制一个演示单链表插入、删除
35、、查找等操作的程序 2需求分析 本演示程序用TC编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元 素在单链表中的位置。 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元 素时输入删除元素的位置; 查找操作时需要输入元素的值。 在所有输入中, 元素的值都是整 数 输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其 中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。 程序所能达到的功能:完成单链表的生成(通过插入操作) 、插入、删除、查找操作 测试数据: 11, 12, 13, 14, 15, 16,生成一个单链表 12, 1
36、5, 22 返回这 3 个元素在单链表中的位置 2, 5,删除位于 2 和 5 的元素 3概要设计 1) 为了实现上述程序功能,需要定义单链表的抽象数据类型: ADT LinkList 数据对象:D=ai|ai IntegerSet,i=0,1,2, ,n,n 0 数据关系:R=|ai,ai+1 D 基本操作: InitLinkList(&L) 操作结果:构造一个空的单链表 L. InsLinkList(&L,pos,e) 初始条件:单链表 L 已存在 操作结果:将元素 e插入到单链表L的pos位置 DelLinkList(&L,pos,&e) 初始条件:单链表
37、 L 已存在 操作结果:将单链表 L 中 pos 位置的元素删除, 元素值置入 e 中返回 LocLinkList(L,e) 初始条件:单链表 L 依存在 操作结果:单链表 L 中查找是否元素 e, 若存在,返回元素在表中的位置;若不存在,返回 -1. Menu() 操作结果:在屏幕上显示操作菜单A 插入操作中依次输入 B 查找操作中依次输入 C 删除操作中依次输入 2) 本程序包含7个函数: 主函数 main() 初始化单链表函数 InitLinkList() 显示操作菜单函数 menu() 显示单链表内容函数 dispLinkList() 插入元素函数InsLinkList() 删除元素函数DelLinkList() 查找元素函数LocLinkList() 各函数间关系如下: InitLinkList Jlenu DispLinkList InsLinkList DelLinkList LocLinkList 4 “详细设计 实现概要设计中定义的所有的数据类型, 对每个操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DZ/T 0249-2010煤层气田开发方案编制规范
- CJ/T 502-2016卡压式铜管件
- CJ/T 188-2018户用计量仪表数据传输技术条件
- CJ/T 119-2000反渗透水处量设备
- GA/T 2014-2023道路交通信号配时运行管理规范
- 中级社会工作者考试知识点与试题及答案
- 2025年网络规划设计师考试记忆技巧试题及答案
- 助力考试2025年网络规划设计师考试试题及答案
- 厂房拆除合同协议书文本
- 效率学习系统分析师考试试题及答案
- 工程造价咨询服务投标方案(专家团队版-)
- 信息安规(254题-含答案和解析)
- 《机械系统动力学》课件第六章 动力学专题
- 公务员制度讲座-第二次形成性考核-国开(SC)-参考资料
- 《欧洲古典风格酒店》课件
- 医药健康安全
- 【MOOC】微生物学-浙江工业大学 中国大学慕课MOOC答案
- 中学生守则40条
- 2mm土工膜长丝土工布检测报告合格证
- 2024年大学生求职面试技巧培训课件
- 急性出血性结膜炎防治
评论
0/150
提交评论