《数据结构》课程教学大纲课程类别:专业基础课适用专业:计算机应用技术适用层次:高起专适用教育形式:成人教育考核形式:考试所属学院:计算机科学与技术学院先修课程:C语言程序设计一、课程简介《数据结构》课程是计算机专业的核心基础课程,是一门理论与实践相结合的课程,整个计算机专业教学体系中处于举足轻重的地位。
数据结构是程序设计(特别是非数值计算的程序设计)的基础,也是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础。
基于该门课程的重要性,现在该课程已经是计算机相关专业研究生考试必考专业课之一,是反映学生数据抽象能力、编程能力的重要体现。
二、课程学习目标通过本课程的学习,使学生具备下列能力:1、能够理解常用数据结构和算法的基本思路、思考方法、使用场合以及算法设计中考虑的各种因素,能运用于非数值型计算问题的建模和算法设计;深入体会经典算法的思路和分析解决问题的方法,能运用于解决其他领域的相关问题。
2、能够针对基本数据结构和算法方面的特定问题进行分析或推导,分析相应的逻辑结构、选择合适的物理结构或给出问题的解;能对简单算法进行复杂度分析。
3、能针对特定问题需求和给定的数据结构进行算法设计。
三、与其他课程的关系数据结构是计算机及其相关专业的专业基础课,是《操作系统》、《数据库原理》等课程的先导课。
四、课程主要内容和基本要求第1单元数据结构及算法性能分析『知识点』本章作为本课程的绪论部分,主要介绍数据结构课程的研究内容,以及数据结构课程中用到的与课程内容相关的概念和基本术语。
另外,在本章还重点介绍了算法的概念、算法的特性以及算法设计的基本要求,分析算法的方法。
本章重点讲解数据结构的相关概念以及算法及其算法分析。
『基本要求』1、识记:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、数据类型、抽象数据类型等基本概念。
2、领会:顺序存储结构和链式存储结构。
3、简单应用:能够实现顺序存储结构和链式存储结构,并在简单问题中应用。
『关键知识』1、数据、数据元素、数据项的概念及相互关系;2、逻辑结构、存储结构的特点及分类;3、逻辑结构、存储结构、算法的联系与区别;4、抽象数据类型的概念;5、算法的时间和空间复杂度。
『重点』逻辑结构、存储结构及算法的联系;评价算法效率的标准及方法。
『难点』算法的时间、空间复杂度分析。
第2单元线性表『知识点』线性表是最基本、最简单、也是最常用的一种数据结构。
线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列。
该部分主要讲解线性表的概念,线性表的顺序存储结构以及链式存存储结构及其它们在计算机中的实现。
线性表的简单应用。
『基本要求』1、识记:线性表、顺序表、单链表、结点、数据域、指针域等基本概念。
2、领会:顺序表和链表的实现方法。
3、简单应用:能够使用顺序存储结构以及链式存储结构实现线性表的基本操作。
4、综合应用:能够利用线性表实现一些实际问题,比如一元多项式的计算问题,作业管理系统等。
『关键知识点』1、线性表逻辑结构;2、顺序存储结构;3、顺序表的定义及基本算法的实现;4、链式存储结构;5、链表(单链表、单循环链表、双向循环链表)的定义及算法实现;6、线性表的应用。
『重点』线性表的定义及逻辑特点;顺序表上插入、删除和定位算法的实现;单链表、单循环链表、双向循环链表的结构特点;单链表和双向循环链表的插入、删除算法的实现。
『难点』头结点在链表中的作用;双向循环链表的插入、删除算法的指针操作顺序。
第3单元栈和队列『知识点』栈和队列在逻辑上属于操作受限的线性结构。
本单元主要介绍栈和队列的基本概念,栈和队列的顺序存储结构及其实现;栈和队列的链式存储结及其实现;栈和队列的应用。
『基本要求』1、识记:栈、顺序栈、链栈、队列、顺序循环队列、链队列、假溢出等基本概念。
2、领会:栈的基本操作的实现,包括顺序栈和链栈。
队列的基本操作的实现,包括顺序循环队列和链队列。
3、简单应用:能够利用栈或者队列解决实际的编程问题,比如迷宫问题,贪吃蛇游戏等。
『关键知识』1、栈的定义;2、顺序栈和链栈的基本算法的实现;3、顺序栈的应用4、队列的定义;5、循环队列和链队列的基本算法的实现;6、队列的应用。
『重点』栈的定义及逻辑特点;栈的顺序(链式)存储结构及入栈、出栈算法的实现;队列的定义及逻辑特点;队列的顺序(链式)存储结构及入队、出队算法的实现。
循环队列的队空、队满条件;循环队列上的插入、删除算法;栈和队列的应用。
第4单元树和二叉树『知识点』本单元主要介绍树和二叉树的基本概念,二叉树的特性,二叉树的遍历以及二叉树的应用,最后介绍树的存储结构以及树的应用。
『基本要求』1、识记:树的相关概念和术语。
2、领会:树和二叉树的存储结构。
3、简单应用:二叉树的建立及其遍历。
4、综合应用:利用树形结构解决实际的编程问题,如利用哈夫曼树实现文本压缩解压。
『关键知识』1、树定义、逻辑结构及特点;2、树的存储结构;3、树和森林;4、二叉树的定义、性质及存储方法;5、二叉链表存储;6、二叉树的前序、中序及后序遍历;7、哈夫曼树和哈夫曼算法。
『重点』树的递归定义;树的存储结构;二叉树的定义、逻辑特点及五个性质;二叉树的链式存储结构;二叉树的三种遍历方法及算法实现;哈夫曼树和哈夫曼算法。
树与二叉树的转换;递归在遍历算法中的应用;哈夫曼算法及其应用。
第5单元图『知识点』本章介绍图的概念,图的存储结构以及图的遍历,然后介绍最小生成树,以及最短路径和关键路径等知识。
『基本要求』1、识记:图的相关概念和术语。
2、领会:图的常用存储结构及其实现。
3、简单应用:能够实现最小生成树、最短路径等算法。
4、综合应用:能够应用图的知识解决实际问题,比如校园导游系统等。
『关键知识』1、图的概念及术语;2、图的操作;3、图的邻接矩阵和邻接表存储方法;4、图的深度优先搜索遍历和广度优先搜索遍历;5、最小生成树的概念;『重点』图的邻接矩阵和邻接表存储;图的深度优先搜索遍历方法和广度优先搜索遍历方法;最小生成树的Prim算法和Kruskal算法。
『难点』图的存储结构特点;深度优先搜索遍历和广度优先搜索遍历算法;最短路径算法。
第6单元排序『知识点』排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。
分内部排序和外部排序,本单元主要介绍内部排序。
主要包括排序的相关概念,然后按照排序过程需要工作量的大小划分为插入排序、选择排序、交换排序、基数排序。
『基本要求』1、识记:排序相关基本概念。
2、领会:各种排序算法思想。
3、简单应用:实现典型的排序算法。
『关键知识』1、排序的概念;2、排序算法的稳定性;3、插入排序;4、选择排序;5、交换排序;『重点』内排序和外排序、稳定排序和非稳定排序的区别;直接插入排序、直接选择排序、冒泡排序、快速排序、堆排序的思路及算法实现。
『难点』希尔排序;快速排序;归并排序。
第7单元查找『基本要求』本单元主要介绍查找的相关概念,在教学过程中,查找可以分为上课模块进行,第一个是顺序表上的查找,包括无序的顺序表的查找,折半查找和索引查找。
第二个模块是树表上的查找,包括二叉排序树,平衡二叉树和B-树,重点介绍二叉排序树。
第三个模块是哈希查找,重点介绍开放定址法和链地址法。
『基本要求』1、识记:查找相关基本概念。
2、领会:各种查找算法思想。
3、简单应用:二分查找、二叉排序树以及哈希查找的实现。
4、综合应用:能够在实际应用中,根据实际情况选择合适的查找算法。
『关键知识』1、查找概念;2、静态查找和动态查找;3、顺序表查找;4、索引表查找;5、树表查找;6、散列表(哈希表)查找。
『重点』折半查找;索引表查找;二叉排序树;散列表及冲突解决的方法;散列表的查找、插入和删除算法的实现。
『难点』散列表算法。
五、课程学习的方法及特点数据结构课程是一门实践与理论并重的计算机专业基础课程,在学习的过程中,首先要注重理论部分的学习。
同学们在看书的同时,可以到网上一些比较出名的MOOC网站看学习视频。
另外,光理论部分的学习是完全不够的,同时还必须注重课程内容中的算法的设计与实现,必须动手编写程序,实现算法。
通过实践环节理解所学理论,掌握分析问题和解决问题的技巧,达到能将利用所学理论解决实际问题,提高学生编程能力。
学生在学习时,应循序渐进,坚持每天保证30分钟至60分钟的学习即可,切忌暴饮暴食,突击学习应付考试。
六、课程学习材料1、教材[1]数据结构教程(第5版,李春葆,清华大学出版社,20172、参考书[1]数据结构(C语言版),严蔚敏,清华大学出版社,2006[2]数据结构与算法,张铭,高等教育出版社,2009[3]数据结构教程(第四版)上机实验指导,李春葆,清华大学出版社,2013七、课程结构导航与学习建议八、考核要求、方式与成绩评定考核要求:教材中教学大纲所要求掌握的内容。
考核方式:笔试。
成绩评定:选用百分制模式,平时考查与期末考试相结合。