1、一般) 算法的相关内容:算法的定义、算法的特性、算法的时间代价、算法的空间代价。描述算法的方法:类C语言,能够使用C语言编写程序。C语言中函数的定义和调用。描述算法的方法。2、 应用:分析算法的时间和空间复杂度。第二章 线性表通过本章学习,学生需要了解两种存储方法各自的优缺点,以便针对不同的需求运用合适的存储方式,掌握线性表的逻辑结构的特点、线性表在内存中的两种存储方法,熟练掌握并理解链式存储方法,会针对数据在不同存储方法时的处理以及相应算法的描述,如果有条件还应通过上机来实现算法。一)线性表的逻辑结构次重点) 线性表的概念、线性表的逻辑结构的特征;常见的线性表的基本运算有六种):线性表的初始
2、化、求表长、读取线性表中的元素、在线性表中查找某个元素、在线性表中插入元素、在线性表中删除元素。线性表的概念。逻辑结构的特征。二)线性表的顺序存储结构 顺序存储结构的实现方法:用一维数组实现。 顺序存储结构中任意元素的地址的计算方法。 顺序存储结构的定义。 基于顺序存储结构的算法描述:插入元素、删除元素的算法描述及应用。1、识记:线性表顺序存储的实现方法。2、理解:顺序存储结构中任意元素的地址的计算方法、存储结构的定义方法。3、应用:在存储结构定义的基础上用类C语言描述算法,并能写出标准的C语言程序上机实现。三)线性表的链式存储结构,free( 的格式、功能、返回值以及调用方法;4)指针的定义
3、和使用;5)链表可分为动态链表和静态链表,主要是对动态链表的理解。6)单链表的结构、特点。7)带表头结点的单链表和类定义及相应操作的实现。8)单链表的类定义、构造函数、单链表的插入与删除算法及其应用。9)循环链表的特点,循环链表的类定义,以及用循环链表解决问题的方法。10)双向链表的特点,双向链表的类定义及相关操作的实现,用双向链表解决问题的方法。线性表链式存储的实现方法、实现所用的函数以及相关概念。链表中存储结构的定义,单链表、双向链表和循环链表的构成,单链表上运算的实现。能用类C语言编写相关算法。三)顺序表和链表的比较1)基于空间的考虑:从数据的存储密度上考虑。2)基于时间的考虑:从运算所
4、需要的时间上进行考虑。顺序表和链表各自的优缺点。2、应用:能针对数据的不同的使用目的为数据选择合适的存储方法。第三章 栈和队列通过本章学习,学生需要掌握栈和队列的特征,栈和队列的顺序存储方式以及在顺序存储方式上的各种操作,并能读懂相关的算法,了解栈和队列的链式存储结构以及栈和队列的简单应用。一)栈 栈的应用。栈的定义和特征,六种基本运算函数。顺序栈上的六种基本运算。通过掌握栈的特征来读懂栈的相关的算法,可以不要求写算法。二)队列1)队列的定义、队列的特征。2)队列的基本运算定义:六种基本运算函数的函数名、参数、返回值和调用方法。3)队列的顺序存储:一般顺序存储的队列和循环队列,循环队列主要解决
5、的问题。4)在循环队列中六种基本运算的实现方法和具体算法。4)循环队列中掌握队列空和队列满的条件。5)队列的链式存储。6)队列的应用。队列的定义和特征,六种基本运算函数。循环队列上的六种基本运算。通过掌握循环的特征来读懂队列的相关的算法。第四章 串通过本章学习,学生需要了解串的基本概念及串的基本操作,掌握串的顺序存储结构和顺序串的各种运算的实现,了解串的链式存储结构。一)串及其运算1)串的基本概念:串、串名、串值、串长。2)区别下列概念:空串和空格串3)理解一下概念:子串、主串、串相等、子串在主串中的位置。4)串的运算有:赋值运算、判相等运算、求串长运算、插入运算、删除运算、连接运算、替换运算
6、、取子串运算。5)掌握以上各种运算的函数的写法、函数参数的含义和各函数的返回值、函数的调用方式。串的相关概念、串的基本运算函数的原型。串的各种有关的概念、串的基本运算函数的参数。串的概念在实际例子中的应用、能够用串的基本函数对给出的字符串进行处理。二)串的存储结构 1)串的顺序存储结构。 2)串的链式存储结构。1、理解:串顺序存储结构。第五章 数组和广义表通过本章学习,学生需要了解数组的逻辑定义和基本运算;熟练掌握数组的两种顺序存储方式;掌握特殊矩阵和稀疏矩阵的压缩存储;了解广义表的基本概念及其操作。一)数组的定义和运算 1)一维数组、二维数组的定义; 2)一维数组的顺序存储以及在顺序存储中求
7、任意一个元素的首地址。 3)二维数组的顺序存储:行主序、列主序 4)在二维数组的两种顺序存储方式中分别求任意一个元素的首地址。数组的定义。二维数组的两种存储方式。能计算一维、二维数组中各元素的首地址。二)矩阵的压缩存储 1)特殊矩阵:对称矩阵、三角矩阵、对角矩阵、稀疏矩阵。 2)压缩存储的意义。 3)各种特殊矩阵的压缩存储方式。 4)在压缩存储中元素与存储下标的关系。 5)稀疏矩阵的特殊存储。特殊矩阵的压缩存储方式。能计算在压缩存储中元素与存储下标的关系。三)广义表 1)广义表的概念和它的定义方式、表头和表尾的定义。 2)广义表的性质。 3)广义表的存储结构。 4)广义表的基本操作。广义表的概
8、念,表头和表尾的表示。广义表的基本操作即对给定的广义表分离出表头和表尾。第六章 树和二叉树通过本章学习,学生需要了解树的定义及基本术语;熟练掌握二叉树的性质,了解其性质的证明方法;熟练掌握二叉树的存储结构和各种遍历方法;了解二叉树的线索化的方法;熟练掌握哈夫曼树的构造方法及应用;熟练掌握树的各种存储结构及特点;掌握树和森林与二叉树的相互转换方法。一)树的概念和基本术语 1)树的定义:掌握其定义的递归性。 2)树的基本术语:结点的度、分支结点、叶结点以及树的家族关系的描述方法。 3)森林的概念。树的概念及基本术语。二)二叉树 二叉树的存储结构1)顺序存储结构:主要解决满二叉树和完全二叉树的存储。
9、2)链式存储结构:结点的组成和存储方式。二叉树的二叉链表存储。四)二叉树的遍历1)先序遍历方法。2)中序遍历方法。3)后序遍历方法。4)层次遍历方法。5)线索二叉树的概念。6)对二叉树线索化的方法。二叉树的三种遍历方法。二叉树的三种遍历方法以及二叉树的线索化的方法。能根据画出的二叉树写出遍历结果;已知中序和先序遍历结果或中序和后序遍历结果画出二叉树;并能画出线索树。五)哈夫曼树及其应用 1)哈夫曼树的定义以及相关术语:路径长度、权值等。 2)加权路径长度的计算方法。 3)构造哈夫曼树的方法。 4)哈夫曼树的应用。哈夫曼树的定义及相关概念。哈夫曼树的构造方法。能构造哈夫曼树以及完成哈夫曼编码。六
10、)树与森林 1)树的存储结构:双亲表示法;孩子表示法;孩子兄弟表示法。 2)树、森林转换成二叉树的方法。 3)二叉树转换成树、森林的方法。树的孩子兄弟存储法。树、森林与二叉树的相互转换。能完成树、森林与二叉树的相互转换。第七章 图通过本章学习,学生需要了解图的基本概念和相关术语;熟练掌握图的邻接矩阵和邻接表以及图的深度遍历和广度遍历方法;能够用Prim和Kruscal方法构造最小生成树。一)图的概念和基本操作 1)图的定义。 2)图的相关概念:无向图、有向图、无向完全图、有向完全图、子图、邻接、路径、路径长度、简单路径、回路或环、定点的度、连通、连通图哈强连通图等。 3)图的存储结构:邻接矩阵
11、表示法、邻接表表示法。 4)图的深度优先遍历。 5)图的广度优先遍历。图的定义和相关术语、图的存储结构。图的两种遍历方法。二)图的连通性问题 1)无向图的连通分量和生成树。 2)有向图的强连通分量。 3)最小生成树的概念。 4)用普里姆Prim)算法构造最小生成树。 5)用克鲁斯卡尔Kruscal)算法构造最小生成树。最小生成树的概念。能用两种算法构造最小生成树。第八章 查找通过本章学习,学生需要掌握静态查找表及其查找算法:顺序查找、折半查找、分块查找;了解动态查找表:二叉排序树;掌握哈希表及其查找。一)查找的基本概念 1)查找的概念及查找表。 2)静态查找表和动态查找表。 3)查找表的存储结
12、构。查找的方法;静态查找表。二)静态查找表1)顺序查找的基本思想、算法实现。2)折半查找在有序表中查找的基本思想:折半查找的实现过程和算法实现。3)分块查找的思想、实现过程。顺序查找、折半查找、分块查找的基本思想。顺序查找、折半查找、分块查找的实现过程。顺序查找、折半查找、分块查找的算法实现。三)动态查找表1)二叉排序树的概念。2)二叉排序树的构造。3)在二叉排序树上的查找方法。二叉排序树的概念和构造方法。四)哈希表查找 1)哈希表的概念:散列、哈希表、哈希函数、冲突。 2)构造哈希函数的方法:直接定址法、平方取中法、数字分析法、除留余数法。 3)处理冲突的方法:开放定址法、拉链法。哈希表的概
13、念。哈希表的查找为何会转换到构造哈希函数和处理冲突上来。能利用构造哈希函数和处理冲突的方法构造哈希表。第九章 排序通过本章学习,学生需要了解各种排序方法的稳定性,掌握排序的基本概念、排序的种类、排序的过程及方法;并会用各种排序方法的算法。一)排序的基本概念 1)排序的概念。 2)排序的分类。 3)排序稳定性的判断。排序的基本概念和分类。二)插入排序 1)插入排序的基本思想。 2)插入排序的分类:直接插入排序、希尔排序、。 3)两种排序的实现过程。 4)直接插入排序的算法实现。插入排序的基本思想。两种排序的实现过程。对给定数据排序的实现。三)交换排序 1)交换排序的基本思想。 2)交换排序的分类
14、:冒泡排序、快速排序。3)两种排序的实现过程。 4)冒泡排序的算法实现。交换排序的基本思想。四)选择排序 1)选择排序的基本思想。 2)选择排序的分类:直接选择排序、堆排序。 3)堆排序的概念以及初始堆的建立 4)直接选择排序的算法实现。选择排序的基本思想。五)归并排序 1)归并排序的思想。 2)二路归并的实现过程。归并排序的基本思想和实现过程。第三部分实践环节一、教案目的实验目的在于更深入的理解和掌握课程教案中的有关基本概念,将知识转化为能力,通过解决实际问题,来提高分析和解决问题的能力。因此明确实验的目的,以保证达到课程所指定的基本要求。实验一 顺序存储的线性表一)实验目的:1、了解线性表
15、的逻辑结构特征。2、熟练掌握线性表的顺序存储结构的描述方法及在其上实现各种基本运算的方法。3、掌握和理解本实验中出现的一些基本的C语言语句。4、体会算法在程序设计中的重要性。二)实验内容: 1、将一顺序表中的元素逆置,要求算法仅用一个辅助结点。 2、求顺序表中的元素的最大值和次最大值。 3、设一顺序表中元素值递增有序。试设计一算法,将元素x插入到表中适当的位置上,并保持顺序表的有序性。实验二 单链表一)实验目的 1、熟练掌握线性表运用链表存储时的各种运算的算法实现。 2、掌握和理解本实验中出现的一些基本的C语言语句。 3、体会算法在程序设计中的重要性。二)实验内容 1、设计一算法,逆置带头结点
16、的动态单链表,要求用原表的结点空间。 2、设一链表表中元素值递增有序。 3、在无表头结点、也无头指针的非空单循环链表中,指针S指向该链表中的任一结点,试写一算法删除结点S的直接前驱结点。 4、设有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C实验目的 1、掌握图的两种存储结构的实验方法。 2、掌握遍历图的递归算法。 1、设计算法,构造无向图的邻接链表。 2、设计算法,构造无向图的邻接矩阵。实验七 查找 1、掌握顺序查找、二分查找的递归和非递归算法。 2、掌握散列表上的各种操作。 3、了解在二叉排序树上各种操作的实现。 1、给出顺序表上顺序查找元素的算法
17、。 2、给出非递归的二分查找算法。实验八 排序 1、熟练掌握在顺序表上实验排序的各种方法。 2、深刻理解各种算法的特点并能灵活运用。顺利编写各种排序程序,实现对任意无序序列的递增排序操作。第四部分有关说明与实施要求一、课程自学考试大纲中有关术语的说明在各章“基本要求”中,对概念和理论要求的提法是“了解”、“理解”、“深刻理解”;对技能要求的提法是“掌握”、“熟练掌握”。为使自学者进一步把握自学要求,在各章的考核要求中,提出了识记、理解应用等三个能力层次,他们之间是递进等级的关系,后者必须建立在前者基础上。它们的含义是:-能知道有关的名词、概念、知识、定律、原理的意义,并能正确认识和表达。-在了
18、解的基础上,能全面的把握基本概念和原理的区别与联系。-在理解的基础上,能用学过的一、二个知识点,分析和解决简单的问题,并且在简单应用基础上,能用学过的多个知识点综合分析和解决复杂的问题。二、考核目标的能力层次表述:识记:能知道记忆有关名词、概念的意义,并能正确认识和表达。理解:在识记的基础上能把握基本概念和原理,能认识到有关概念和原理的区别与联系。应用:在掌握的基础上能用学过的知识点综合分析和解决一般性的问题。三、指定教材:数据结构齐景嘉著东南大学出版社2006年8月第1版。四、自学方法指导1、在全面系统学习的基础上,掌握数据结构的基本概念、几种基本数据结构以及建立在各存储结构上的运算。各章节
19、之间既互相联系,逐层深入,又相对有一定的独立性,自学应考者应先弄清本课程的体系,由浅入深、全面系统地学习各章内容,记忆应当识记的基本概念,读懂、理解线性表、排序和查找等章节程序例题,然后有目的地深入学习各重点章节。2、把学习数据结构的基本理论与上机实习结合起来。这要在C语言的基础上,把类C程序写成标准的C 语言程序,才可以输入到计算机中调试、运行、分析输出结果。有能力的考生应尽可能多地编程上机,以提高自己运用所学C语言知识对所学的数据结构有独立编程的能力。五、对社会助学的要求:1、社会助学者应根据本大纲规定的考核知识点和基本要求,认真钻研指定教材,明确本课程与其它课程的不同特点与学习要求,对自
20、学应考者进行切实有效地辅导,注意纠正他们自学中的各种偏向,把握社会助学的正确导向。2、要正确处理基础知识和应用能力的关系,努力引导自学应考者将识记、掌握同应用联系起来,把基础知识和理论转化成应用能力,在全面辅导的基础上,着重培养和提高自学应考者的分析问题、解决问题和编写程序的能力。3、要正确处理重点和一般的关系,课程内容有重点和一般之分。但考试内容是全面的,而且重点和一般是相互联系的,不能截然分开。社会助学者应指导自学应考者全面系统地学习教材,掌握全部考试内容和考核知识点,在此基础上再突出重点。总之,要把重点学习同兼顾一般结合起来,切勿孤立地抓重点把自学应考者引向猜题、押题的错误倾向。4、助学
21、学时:本课程为6学分,助学学时为108学时,分配如下:章次理论助学学时一2 八12二28九三8四4五六18七六、关于命题考试的若干要求:1、本课程的命题考试,应根据本大纲所规定的考核知识点和基本要求来确定考试范围和考核要求,不要任意扩大或缩小考试范围,提高或降低考核要求。考试命题要覆盖到各章,并适当突出重点章节,体现本课程的内容重点。2、本课程在试卷中对不同能力层次要求的分数比例,一般为:识记占15%;理解占35%;应用占50%。3、试卷要合理安排难度结构。试卷难易度可分为:易、较易、较难、难四个等级。每份试卷中,不同难易度试卷的分数比例一般为:易占20%;较易占30%;较难占30%;难占20%。必须注意,试卷的难易度与能力层次不是一个概念,在各能力层次中都会存在不同难度的问题,切勿混淆。4、本课程考试试卷采用的题型有:单项选择题、填空题、简答题、程序填空题、计算题、综合应用题。5、考试方式采用闭卷笔试120分钟。采用百分制记分,60分合格。七、题型示例:一)单项选择题:1、数据