复杂度为0(nlogn>地排序法.讨论了各算法地稳定性.jLBHrnAILg
1、考核知识点
<1)基本概念:
排序、稳定地排序.
<2)插入排序-交换排序-选择排序-归并排序分配排序地算法及其程序实现.
<3)shell排序-快速排序-堆排序,链式基数排序地算法及其程序实现•
<4)快速排序和归并排序地非递归算法.
<5)稳定地排序方法和不稳定地排序方法.
2、自学要求
<1)熟悉各种排序地基本思想.
<2)掌握各种排序方法地实现途径<非递归与递归方法).
<3)掌握各种排序算法地结构<一趟排序与整体排序).
<4)掌握分析排序算法时间复杂度地方法.
<5)熟悉掌握将算法转换成相应程序地能力.
2、考核目标<1)识记有关地基本概念与术语.
<2)理解各排序算法地模型.<3)分析各排序算法地稳定性.<4)运用希尔排序、堆排序和链式基数排序思想编写相应程序.
<5)为实际应用选择恰当地排序算法.
第四章栈和队列
本章介绍了栈地定义以及栈地基本操作地实现.特别介绍了栈与递归地关系以及栈和递归在问题求解中地作用.本章还介绍了队列地定义、队列地存储桔构、队列基本操作地实现.特别介绍了循环队列及其应用,以及其它类型地队列.xHAQX74J0X
1、知识点
<1)基本概念:
栈、栈顶、栈底、递归、直接递归、间接递归、尾递归、前缀表达式、中缀表达式、后缀表达式、迭代队列、队头、队尾、队列地长度、链队列、循环队列等.LDAYtRyKfE
<2)顺序栈地基本操作.
<3)链栈地基本操作.
<4)问题地递归定义和递归程序.
<5)递归地效率分析.
<6)栈地主要应用及实现算法.
<7)队列地定义与特点.
<8)链队列基本操作地实现.
<9)循环队列基本操作地实现.<10)循环队列判空与判满地条件.
2、自学要求
<1)熟悉栈地逻辑结构和存储结构.<2)掌握栈地基本操作特别是在边界条件下地操作.
<3)掌握递归地定义及递归地实现过程.
<4)理解栈与递归地关系.
<5)掌握用递归方法求解问题地技术.<6)掌握用非递归方法实现某些递归算法地方法.
<7)掌握用迭代方法求解问题地技术.<8)熟悉队列地逻辑结构和存储结构
<9)掌握链式队列地基本操作.<10)掌握循环队列地基本操作特别是在边界条件下地操作.
<11)掌握队列在问题求解中地应用.
3、考核目标
<1)识记栈和队列地各种基本概念与术语.
<2)理解栈地定义和栈地实现.
<3)掌握栈地应用.
<4)分析递归算法地实现过程.<5)在问题求解中综合使用递归与非递归方法.
<6)理解抽象数据类型队列地定义.
<7)掌握队列地存储结构.
<8)掌握有关队列地各种算法.
<9)分析在问题求解中队列地应用.
第五章串和数组
本章介绍了串和数组地逻辑结构和存储结构,特别介绍了串地表示和实现及串地一个
应用实例—正文模式匹配与编辑.对数组部分,特别介绍了压缩方法,以及在压缩存储地矩
阵上实现基本操作地算法.Zzz6ZB2Ltk
1、考核知识点
<1)基本概念:
串、串长度、空串、字串、主串、串中地位置、正文模式、数组、
数组元素、数组下标、数组地维数、特殊矩阵、稀疏矩阵、三元组、十字链表等.dvzfvkwMIl
<2)串地定义与实现.
<3)正文模式匹配地实现.
<4)数组地定义及其顺序存储结构.
<5)数组地压缩存储方式.
<6)压缩存储数组地基本操作地实现.
<7)矩阵转置操作.
2、自学要求
<1)识记有关串与数组地基本概念和术语.
<2)理解串地定义及串地基本操作.
<3)掌握正文模式匹配算法和其实现.
<4)理解数组地定义及数组地基本操作.
<5)掌握矩阵压缩存储方法及其特点与适用范围.
<6)掌握压缩存储技术在问题求解中地应用.
3、考核目标
<1)识记串和数组地各种基本概念与术语.
<2)理解串和数组地定义和栈地实现.
<3)分析递归算法地实现过程.
<4)掌握矩阵压缩存储方法及其特点与适用范围.
<5)掌握压缩存储技术在问题求解中地应用.
第六章二叉树和树
本章介绍了树和森林地定义,特别介绍了二叉树地定义'二叉树地性质'二叉树地存储
结构及二叉树基本操作地实现.对二叉树地周游算法作了详细描述.森林与二叉树之间地转换为树提供了一种自然地存储结构.哈夫曼树和哈夫曼编码是树地一个重要应用.树地
另一个重要应用是描述状态空间,回溯法是问题求解地有效方法.rqyn14ZNXI
1、考核知识点
<1)基本概念:
树、树根、空树、子树、森林、叶结点、分支结点、双亲结点、孩子结点、祖先结点、子孙结点、兄弟结点、堂兄弟结点、结点地度、树地高度、二叉树、左子树、右子树、满二叉树、完全二叉树、二叉树地周游、树和森林地周游、树地路径长度、树地带权路径长度、哈夫曼树、哈夫曼编码、回溯等.EmxvxOtOco
<2)树和森林地定义.
<3)二叉树地定义及其递归结构.
<4)二叉树地存储结构.
<5)二叉树地周游算法.
<6)树地存储结构.
<7)森林与二叉树地转换.
<8)哈夫曼树构造算法.
2、自学要求
(1)熟悉二叉树地逻辑结构地存储结构.
(2)理解二叉树地递归结构及利用这种结构地算法.
(3)掌握二叉树周游递归与非递归算法.
(4)掌握将森林转换成二叉树地算法.
(5)掌握用哈夫曼树对通讯符号进行哈夫曼编码地方法.
3、考核目标
(1)识记有关基本概念.
(2)理解二叉树'树'森林地递归定义.
(3)掌握二叉树地二叉链表表示法和顺序表示法.
(4)掌握树和森林地孩子兄弟表示法.
(5)掌握二叉树'树'森林地周游算法.
(6)掌握二叉树和树在问题求解中地应用.
(7)分析哈夫曼树和哈夫曼编码地特性.
第七章图和广义表
本章介绍了图地类型定义及图地表示方法和图地基本操作.着重介绍了图地应用
以及蕴含在其中地问题求解技术.例外,还简单地介绍了广义表地基本概念、存储结构和遍历算法.SixE2yXPq5
1、知识点
<1)基本概念:
图、有向图、无向图、有向弧、边、顶点、邻接顶点、与顶点关联地边<弧)顶点地编号、顶点地度、顶点地入度、顶点地出度、生成树、最小代价生成树、拓扑有序、拓扑排序、有向无环图、AOV网、AOE网、关键路径、关键活动广义
表等.6ewMyirQFL
<2)图地定义及存储结构.
<3)图基本操作地实现.
<4)深度优先搜索和广度优先搜索.
<5)生成树构造算法.
<6)普里姆算法和克鲁斯卡尔算法.
<7)拓扑排序算法.
<8)求关键路径算法.
<9)迪杰斯特拉算法和弗洛伊德算法.
2、自学要求
(1)理解无向图和有向图地定义.
(2)理解图地表示方法.
(3)掌握图地周游算法.
(4)掌握构造生成森林地步骤.
(5)掌握普里姆算法和克鲁斯卡尔算法地使用方法.
(6)掌握拓扑排序和逆拓扑排序在求关键路径中地作用.
(7)掌握迪杰斯特拉算法和弗洛伊德算法地使用方法.
3、考核目标
(1)识记有关基本概念和术语.
(2)理解图地表示方法及其适用范围.
(3)理解图地基本操作地实现算法.
(4)运用图求解实际问题.
(5)综合分析图特性地能力.
(6)编写有关图地算法和程序地能力.
第八章查找表
本章介绍了基本地查找技术和索引技术,特别介绍了动态查找表地存储结构以及对查找表进行地基本操作.对哈希表查找也作了详细地描述.kavU42VRUs
1、考核知识点
(1)基本概念:
查找、静态查找、动态查找、关键码、次关键码、查找成功、叉查找树、平衡二叉查找树、哈希表、开放定址法、链地址法等.y6v3ALoS89
(2)顺序查找算法及性能分析.
(3)折半查找算法与非递归算法及性能分析.
(4)二叉查找树递归查找算法及插入删除算法.
(5)平衡二叉查找树地地特点及插入算法.
(6)哈希表查找算法.
2、自学要求
(1)熟悉对查找表地基本操作.
(2)理解静态查找与动态查找地区别.
(3)掌握静态查找表常用地存储结构及查找算法.
(4)掌握动态查找表常用地存储结构及查找算法.
(5)掌握哈希表结构及哈希表查找算法.
3、考核目标
(1)识记有关查找与索引地概念与术语.
(2)理解各种查找算法.
(3)理解各种索引技术.
(4)根据实际应用选择哈希函数和冲突处理方法.
(5)设计相应算法并编写程序.
(6)分析实际问题并设计求解算法和程序加以实现.
第九章文件
本章介绍了文件地定义,文件地分类,文件地组织结构和文件管理以及外部排序地方
法.特别介绍了顺序文件,索引文件,散列文件和倒排文件地结构和对文件地更新操
作.M2ub6vSTnP
1、考核知识点
(1)基本概念:
文件、记录、顺序文件、连续文件、串联文件、索引文件、
索引顺序文件、索引非顺序文件等.
2)
顺序文件地更新操作.
3)
索引文件地更新操作.
4)
散列文件.
5)
多关键码文件.
2、
自学要求
1)
熟悉文件及有关地概念.
2)
理解对顺序文件地批处理更新算法
3)
理解索引文件地插入和删除方法
4)
理解散列文件地组织结构.
5)
理解倒排文件地组织结构.
3、考核目标
1)识记有关文件地各种概念和术语.
2)理解不同文件组织地特点.
3)在实际应用中会选择恰当地文件结构
第十章数据结构程序设计示例
本章通过具体地实例介绍了数据结构地实验过程,包括对问题地分析、数据结构地确
定与建立、算法地设计与实现、程序地编制与调试,实验报告地编制等.本章特别强调了
程序地规范说明和建立数据结构模型所用地抽象数据类型.0YujCfmUCw
1、考核知识点
<1)基本概念:
抽象数据类型、程序规范说明、问题描述、需求分析、概要设计详细设计、调试、静态调试、动态调试、测试、测试数据、使用说明书等.eUts8ZQVRd
<2)抽象数据类型地表示与实现.
<3)从问题到程序地求解<数据结构模型地建立、算法设计、抽象数据类型地实现、程序代码地编制、静态调试和动态调试).sQsAEJkW5T
<4)含并、交和差运算地集合类型地实验<问题描述、需求分析、概要设计、详细设计、调试分析、使用说明、测试结果、附录).GMsIasNXkA
<5)最佳任务分配方案求解地实验<问题描述、需求分析、概要设计、详细设计、调试分析、使用说明、测试结果、附录).TIrRGchYzg
<6)排队问题地系统仿真地实验<问题描述、需求分析、概要设计、详细设计、调
试分析、使用说明、测试结果、附录).7EqZcWLZNX
<7)十进制四则运算计算器地实验<问题描述、需求分析、概要设计、详细设计、
调试分析、使用说明、测试结果、附录).lzq7IGf02E
<8)自行车零部件库地库存模型地实验<问题描述、需求分析、概要设计、详细设
计、调试分析、使用说明、测试结果、附录).zvpgeqJ1hk
<问题描述、需求分析、概要设计、详细设计、
.fjnFLDa5Zo
2、自学要求
<1)熟悉从问题分析到程序调试全过程中所遇到地关地概念<2)掌握抽象数据类型及其实现方法.
<3)掌握问题到程序地求解过程.
<4)掌握程序规范说明.
<5)理解八个数据结构应用实例.
<6)了解程序地调试技术.
<7)了解测试数据和测试数据地选取原则.
3、考核目标
<1)识记数据结构实验过程中所遇到地各种概念和术语.
<2)理解数据结构实验过程中地各种文档格式和各环节地内容.
<3)理解八个实例所代表地数据结构地内涵.
<4)掌握在实际问题求解中对问题地描述和抽象、数据结构地选择和表示、算法地设计、程序地编码和调试,文档地书写等过程.tfnNhnE6e5
三、有关说明与实施要求
1、自学教材和参考资料自学教材:
<1)《数据结构及应用算法教程》严蔚敏陈文博编著
参考书:
<1)《数据结构》严蔚敏吴伟民编著清华大学出版社<2)《数据结构实用教程2、考试方式
闭卷、笔试,时间为150分钟.
3、题型结构
(1)
填空题
<5)
多项选择题
(2)
改错题
<6)
程序填空题
(3)
简答题
<7)
编写程序题
(4)
单项选择题
<8)
算法设计题
4、难度结构本课程考试主要测试考生对数据结构地基本概念、基本原理和基本算法地理解、掌握程度以及运用这些基础知识分析问题和进行简单程序设计地能力.其中较易地占领30%,
中等难度地占领30%,较难地占25%,难地占15%.HbmVN777sL
5、计分方法
采用百分制,60分为合格.
6、实践性环节考核
本课程实践性环节占1学分.通过上机实践,考核考生对基本原理、基本算法地掌握和运用程度.上机内容包括:
线性表、栈、队列和数组地表示及基本操作算法地设计与
实现;树与图地表示及周游算法和其它算法地设计与实现;基本排序算法地设计与实现;基本搜索技术地设计与实现以及文件地使用.V7l4jRB8Hs
要求考生完成6个上机实习题和两份规范地上机实习报告,并参加上机实习考核
四、题型举例
<1)填空题
例对一棵二叉树地周游常用、、三种方法•
<2)改错题例一棵有n个结点地完全二叉树中至多有nDIV2个叶子结点
<3)简答题
例什么是二叉树?
<6)程序阅读题
例试填写下列链表插入程序中地空格a、b和c
BoolListInsert(List*lp,inti,elemtpelement>{
intj。
list*p。
p=lp。
j=0。
while(a>
{
p=p->next。
j++。
}
if(p==NULL||j>i-1>
printf(“Nothispositinon”〉
else
{s=newNode。
s->data=element。
b。
c。
}
}
<7)编程题
例试定义一种栈地存储结构,并写出该栈地入栈与出栈算法•
<8)算法设计题
例病人看病要排队,按先来先服务和老人优先原则,如果病人年龄>60岁且大于队尾病人地年龄,就排在队头,否则排在队尾,试设计一个双端队列并给出实现其基本操作地算法.83ICPA59W9
五、实验及实习要求
1、课程设置地目地和意义
数据结构是计算机专业本科学生必修地一门专业基础课•通过这门课程地学习,可以
使学生掌握三类数据结构地表示与实现,并能将其应用实际问题地求解过程中,培养对问
题分析、表示和实现地能力,为独立设计算法和对算法进行复杂性分析奠定坚实地理论基础.mZkklkzaaP
本课程在本科生阶段地计算机专业基础课处于一个打基础地地位•本课程地前导课程
为计算机科学导论、离散数学、C语言程序设计•学习完本课程后,学生应当能够独立分
析、表示并求解基本地问题,设计具有一些小规模程序.AVktR43bpw
学生通过自己动手设计数据结构、编制程序并实现,然后形成分析结果,可以使学生
充分认识到课堂上所讲授地各种方法地涵义,体会到各种方法地优缺点,并进一步掌握用
高级语言编程和训练对实际问题求解地方法.ORjBnOwcEd
2、应达到地基本要求
学生在进行完本实验课地教案后,应该能够掌握计算机问题求解中常见地数据结构地
表示与实现,对于线性结构、树状结构和网状结构三类结构有明确地认识.能够设计比较
简单问题地算法,并可以根据算法编制、调试运行相应地程序.可以对算法地复杂度进行
估计与证明,能够编写、组织测试数据,根据实验结果作出算法地性能分布图,并对实验结
果进行评价.2MiJTy0dTT
3、教案文件及教案形式
教案文件:
数据结构教科书、讲义.实验报告学生自拟.
实验环境:
本实验可选用地高级语言为C/C++.实验用机地硬件配置,软件环境自定
4、实验成绩评定
每次实验地成绩按照5分制评分,实验课地总成绩将按一定比例结合到课程总成绩中
5、实验报告基本格式
实验目地:
同教材
实验要求:
同教材上机环境:
硬件配置与软件环境<包括操作系统、编译器等).完成时间:
使用多少个小时来完成本题目.
程序说明:
使用文字和/或框图说明程序地基本结构程序清单:
测试数据与测试结果:
思考题:
感想与建议:
6、学时分配本实验课地适用专业为计算机科学与技术.本实验课程学时为18学时,学时分配如下:
实验1线性表及其运算<学时:
3)实验2链表及其运算<学时:
3)实验3二叉树地存储与遍历<学时:
3)实验4图地存储与遍历<学时:
3)实验5排序<学时:
3)实验6查找<学时:
3)
实验一线性表及其运算
1、实验目地
掌握线性表地逻辑特征掌握线性表顺序存储结构地特点熟练掌握线性表地基本运算掌握栈和队列地特点及其运算
2、实验要求:
按要求编写实验程序,将实验程序上机调试运行,给出输出地结果,并提
交实验报告,写出调试运行程序地分析和体会.gIiSpiue7A
3、实验内容
1)有一个已按递增次序排好序地线性表,今输入一个数,要求按原来地排序规律
将它插入到线性表中.
2)利用一个堆栈,将一个线性表中地元素按逆序重新存放.例如原来地顺序为
12,8,6,4,2,要求改为2,4,6,8,12.uEh0U1Yfmh
3)设数组QU[0,mo-1]中存放循环队列地元素.编写能向该循环队列插入一个结点数据和删除一个结点数据地程序.IAg9qLsgBX
实验二链表及其运算
1、实验目地
掌握链表存储结构地特点熟练掌握单链表地基本运算掌握循环链表和双链表地特点和基本运算
2、实验要求:
按要求编写实验程序,将实验程序上机调试运行,给出输出地结果,并
提交实验报告,写出调试运行程序地分析和体会.WwghWvVhPE
3、实验内容
1)建立一个单链表,显示链表中每个结点地数据,并做删除和插入处理.
2)建立一个双链表,从链首开始,顺序显示链表中地所有结点地数据,然后从链尾
开始,反序显示链表中所有结点地数据,最后将一个新地结点插入到链表中.asfpsfpi4k
3)建立如图所示地循环链表,编写一个程序将所有箭头方向取反.实验三二叉树地存储与遍历
1、实验目地掌握二叉树地非线性和递归性特点掌握二叉树地存储结构掌握二叉树地遍历<递归和非递归方式)操作地实现方法
2、实验要求:
按要求编写实验程序,将实验程序上机调试运行,给出输出地结果,并
提交实验报告,写出调试运行程序地分析和体会.ooeyYZTjj1
3、实验内容