《数据结构》实验讲义1
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数据结构》实验讲义
课程简介
课程名称:数据结构
授课对象:计算机科学、软件工程
教材版本:《数据结构》(C语言版)清华大学出版社
学时:102(理论:74 实验:28)
授课教师:
实验(选做,设计性实验,2学时) 实验题目:学生成绩管理系统
●学生记录结构如下:
struct student_type{
char id[5];/*学生学号*/
char name[11];/*学生名字*/
int age;/*学生年龄*/
int math;/*数学成绩*/
int eng;/*英语成绩*/
int ds;/*数据结构成绩*/
int os;/*操作系统成绩*/
}
●10个学生信息如下:
1001 zengliang 19 86 87 84 80
1002 yaochang 18 75 85 79 68
1003 chuhua 20 85 98 76 89
1004 liuchang 21 69 85 75 88
1005 zhaoxia 19 89 85 75 84
1006 lina 20 89 84 95 75
1007 chenzhen 19 90 85 87 85
1008 wangkai 20 82 86 50 69
1009 xiaoyu 19 84 74 70 80
1010 weikun 20 68 84 79 86
实验目的:
1、熟悉C语言的书写规范,注意输入、输出的方式及错误处理
方式。
2、理解算法五个要素的确切含义,掌握计算语句频度和估算算法
时间复杂度的方法。
3、熟悉C语言函数的定义、函数的调用,参数的传递等细节
4、熟悉C语言读写文件的函数及其使用。
实验要求:
●将这10个学生信息存入到磁盘文件stu_list.in中。
●将磁盘文件中的所有学生记录读入内存中一块静态顺序空间
中(使用数组申请),求出所有学生数学的平均成绩。
●将磁盘文件中的所有学生记录读入内存中一块动态申请的顺
序空间中(使用函数malloc()申请),求出所有学生数学的平均
成绩。
实验内容和实验步骤:(由学生填写)
实验用测试数据和相关结果分析:(由学生填写)
实验总结:(由学生填写)
实验一(必做, 设计性实验,2学时,来自第二章)
实验题目:顺序表基本操作
1、在非递减有序顺序表中插入一个元素x,保持顺序表有序性(2.11)
2、比较两个顺序表的大小(2.12)
3、顺序表元素的逆置(2.21)
4、两个(有序或无序)顺序表的合并(书上算法2.1和2.2)
实验目的:
1、熟悉将算法转换成程序代码的过程。
2、了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的C
语言描述方法。
3、熟练掌握顺序表的基本操作:查找、插入、删除、合并等,掌
握顺序表的随机存取特性。
实验要求:
1、要求用静态分配的一维数组和动态分配的一维数组来完成实验题目。分析静态分配的一维数组和动态分配的一维数组在顺序表基本操作实现上的共同点和区别。
2、对顺序表插入的算法,要求用两种方法实现:
(1)自己编写函数实现;
(2)调用顺序表基本操作ListInsert(SqList &L,int i,ElemType x),
比较使用自己编写的插入函数和调用顺序表基本操作的函
数两种实现方法之间的优缺点。
3、对所编写的算法进行时间复杂度分析。
实验内容和实验步骤:(由学生填写)
实验用测试数据和相关结果分析:(由学生填写)
实验总结:(由学生填写)
实验二(必做, 设计性实验,2学时,来自第二章)
实验题目:单链表的基本操作
1、在线性单链表中删除值介于mink和maxk之间的结点(2.19)。
2、线性单链表逆置(2.22)
3、两个(有序或无序)单链表的合并(2.24)
实验目的:
1、了解线性表的链式存储结构及其顺序存取特性,熟练掌握线性
表的链式存储结构的C语言描述方法,
2、熟练掌握动态链表的基本操作查找、插入、定位等,能在实际
应用中选择适当的链表结构。
3、掌握用链表表示特定形式的数据的方法,并能编写出有关运算
的算法。
实验要求:
1、与实验二比较,对于线性表的基本操作的实现,使用顺序存储结构和链式存储结构各有什么优缺点。
2、选做:使用书37页,一种带头结点的线性链表LinkList来完成以上题目。体会作为链表中位序的概念和位置的概念哪个更重要。
实验内容和实验步骤:(由学生填写)
实验用测试数据和相关结果分析:(由学生填写)
实验总结:(由学生填写)
实验三(必做, 设计性实验,4学时,来自第三章)
实验题目:栈和队列的基本操作
1、用栈实现括号匹配的检验
2、用栈实现形如a+b@b+a#的中心对称的字符序列的检验。
3、用栈和队列实现形如a+b@b+a#的中心对称的字符序列的检验。实验目的:
1、熟练掌握栈这种抽象数据类型,能在相应的应用问题中正确选
用它。
2、熟练掌握栈类型的两种实现方法(顺序栈和链式栈),两种存
储结构和基本操作的实现算法,注意栈空和栈满的判断条件及它们的描述方法。
3、熟练掌握队列这种抽象数据类型,能在相应的应用问题中正确
选用它。
4、掌握循环队列与其它顺序结构实现上的不同及解决办法,熟悉
各种队列的基本操作在循环队列上的实现。
实验要求:
1、选择合适的存储结构(顺序栈或链式栈)表示栈,给出其定义。
2、在上述存储结构上实现栈的基本操作:初始化、置栈空、入栈、出栈、取栈顶元素等。
3、选择合适的存储结构(循环队列)表示队列,解决队空、队满判