《数据结构课程实验》大纲 下载本文

《数据结构课程实验》大纲

一、 《数据结构课程实验》的地位与作用

“数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的

关键性课程。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: (1) 内容丰富,学习量大,给学习带来困难;

(2) 贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点;

(3) 所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度;

(4) 隐含在各部分的技术和方法丰富,也是学习的重点和难点。

根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。实验学时为10。

二、《数据结构课程实验》的目的和要求

不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。

为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。

三、 《数据结构课程实验》内容

课程实验共10学时,要求完成以下五个题目:

实习一 约瑟夫环问题(2学时)

用循环链表实现约瑟夫环问题,熟悉链表结构的使用。

实习二 八皇后问题 (2学时)

在8×8的棋盘上放置彼此不受攻击的8个皇后,熟悉递归与回溯程序设计方法。 实习三 二叉树基本操作(2学时)

创建、遍历、显示二叉树,通过二叉树的基本操作,掌握树结构的处理方法。 实习四 哈夫曼编码与译码

针对字符集A及其各字符的频率值(可统计获得)给出其中给字符哈夫曼编码,并

针对一段文本(定义在A上)进行编码和译码,实现一个哈夫曼编码/译码系统。

实习五 最小生成树问题(2学时)

在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。

四、 《数据结构课程实验》考核方式

采用上机情况、程序质量、实习报告相结合的形式,满分为100分。

1. 上机情况(30%)

包括出勤情况、调试表现、是否上网、玩游戏。 2. 程序质量(50%) 3. 实习报告(20%)

《数据结构课程实验》指导书

实习一 线性表

本次实习的主要目的在于熟悉线性表的基本运算在两种存储结构上的实现,其中以熟悉各种链表的操作为侧重点。通过本次实习还可帮助读者复习高级语言的使用方法。

1、城市链表 [问题描述]

将若干城市的信息,存入一个带头结点的单链表。结点中的城市信息包括:城市名,城市的位置坐标。要求能够利用城市名和位置坐标进行有关查找、插入、删除、更新等操作。 [基本要求]

(1) 给定一个城市名,返回其位置坐标;

(2) 给定一个位置坐标P和一个距离D,返回所有与P的距离小于等于D的城市。 [测试数据]

由学生依据软件工程的测试技术自己确定。注意测试边界数据。

2、约瑟夫环 [问题描述] 约瑟夫(Joeph)问题的一种描述是:编号为1,2,…,n的n个人按顺时针方向围坐一圈,每人持有一个密码(正整数)。一开始任选一个正整数作为报数上限值m,从第一个人开始按顺时针方向自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有人全部出列为止。试设计一个程序求出出列顺序。 [基本要求]

利用单向循环链表存储结构模拟此过程,按照出列的顺序印出各人的编号。 [测试数据]

m的初值为20;密码:3,1,7,2,4,8,4(正确的结果应为6,1,4,7,2,3,5)。 [实现提示]

程序运行后首先要求用户指定初始报数上限值,然后读取各人的密码。设n≤30。 [选作内容]

向上述程序中添加在顺序结构上实现的部分。

3、线性表的逆置