《数据结构与算法》课程教学大纲
(课程编号:C0503061 供计算机科学与技术专业专业使用)
一、课程的性质、目标和任务
《数据结构与算法》是计算机程序设计的重要理论和实践基础课。本课程讨论软件设计中经常遇到的线性表、堆栈、队列、串、数组、二叉树、图等典型数据结构的设计方法以及各种典型排序和查找算法的性能和设计方法,并介绍各种典型数据结构的应用。教学过程中强调基本概念和基本算法,强调算法设计与实现。通过本课程的学习,学生对软件设计的基本要素和软件的基本结构有深入理解,并通过算法设计方法学习和上机编程实践,编程能力有进一步提高。
二、课程基本要求
本课程主要介绍:线性表、栈、队列、串、树、二叉树及图等基本数据结构及应用算法;基本的排序和查找算法。以下为本课程的基本要求:
1.了解数据的逻辑结构和物理结构之间的关系,数据结构和数据类型的关系,数据结构和算法的关系。
2.熟悉和掌握各种基 本数据结构的概念特点存储结构,各种基本数据结构的运算及算法设计:根据实际问题提出的要求,选择和设计合理的数据结构。
3.熟悉和掌握排序和查找算法的分析方法,根据实际问题提出的要求学会如何选择合理的排序和查找算法。
考试内容中“掌握”的内容约占70%,“熟悉、了解”的内容约占25%,有5%左右的大纲外内容。
三、课程基本内容及学时分配
本课程体系可分为四部分。第一部分为绪论;第二部分主要内容为线性数据结构及算法应用;第三部分主要内容为非线性数据结构及算法应用;第四部分主要内容为常用的查找和排序算法。根据专业培养要求的不同,计算机科学与技术专业要求掌握的内容要比生物医学工程专业的更深更广。因此,在学时分配上,计算机科学与技术专业教学总时数为90学时(其中理论学时为54学时,实验学时为36学时)。
第一章 绪 论
【掌握】:
1.数据结构的概念;
2.抽象数据类型的表示和实现。
【熟悉】:
算法和算法分析。
【了解】:
算法的空间复杂度。
第二章 线性表
【掌握】:
1.线性表的顺序表示和实现;
2.线性表的链式表示和实现。
【熟悉】:
1.线性表的类型定义;
2.循环链表。
【了解】:
双向链表。
第三章 栈和队列
【掌握】:
1.栈;
2.队列。
【熟悉】:
1.栈的应用举例;
2.链栈和链队列。
【了解】:
栈和队列的复杂应用。
第四章 串
【掌握】:
1.串表示和实现;
2.BF算法。
【熟悉】:
1.串的类型定义;
2.KMP算法。
【了解】:
串的块链存储。
第五章 数组
【掌握】:
动态数组的使用
【熟悉】:
特殊矩阵的存储方式
【了解】:
广义表概念
第六章 递归
【掌握】:
递归算法的设计、执行过程
【熟悉】:
递归算法与非递归算法的转换
【了解】:
递归算法的较复杂案例
第七章 树和二叉树
【掌握】:
1.二叉树;
遍历二叉树和线索二叉树;
3.赫夫曼树及其应用。
【熟悉】:
1.树的定义和基本术语;
2.树和森林。
【了解】:
1.决策树;
2.二叉树用于信息传递。
第八章 图
【掌握】
1.图的存储结构;
2.图的遍历;
3.最小生成树;
4.最短路径。
【熟悉】:
1.图的定义和术语;
2.连通性;
3.拓扑排序。
【了解】:
有向无环图及其应用。
第九章 排序
【掌握】:
1.插入排序;
2.交换排序;
3.选择排序。
【熟悉】:
归并排序。
【了解】:
基数排序。
第十章 查 找
【掌握】:
1.静态查找表;
2.二叉排序树。
【熟悉】:
哈希表。
【了解】:
B-树和B+树。
学时分配
72学时(理论54学时,实验36学时) | |||
章次 | 内 容 | 讲授 | 实验 |
一 | 绪 论 | 3 | 2 |
二 | 线性表 | 9 | 6 |
三 | 栈和队列 | 6 | 4 |
四 | 串 | 2 | 2 |
五 | 数组 | 2 | 2 |
六 | 递归 | 2 | 2 |
七 | 树 | 9 | 6 |
八 | 图 | 9 | 4 |
九 | 排序 | 6 | 4 |
十 | 查找 | 6 | 4 |
总学时 | 54 | 36 |
《数据结构与算法》实验教学大纲
一、实验教学的指导思想和教学目的
《数据结构与算法》是一门实践和理论并重的课程,通过实验使学生对课堂讲授的内容有实际的体验。针对实际问题和典型的数据结构和算法,设计解决方案,并上机输入、编辑、检查、修改、调试和运行程序,掌握和运用所学到的理论知识来解决实际问题,达到学以致用的目的,并激发学生进一步的思考和发挥,注重培养学生的学习兴趣和创新思维,为后续的程序开发与实践打下良好的基础。
二、实验教学的基本要求
通过实验,使学生掌握用C语言实现线性表在顺序存储结构和链式存储结构下的操作、栈操作算法及队列操作算法、串的顺序存储及基本操作算法、二叉树的基本算法、图的基本算法、查找和排序算法的方法。
通过对一些典型算法的代码实现,加深学生对数据结构及算法的基本概念和基本理论的认识,使得学生掌握数据结构和算法设计的基本方法和技巧,训练学生规范书写算法及程序的能力。
三、实验内容与学时分配
序号 | 实验项目 | 学时 | 实验要求 | 实验类型 |
1 | C语言指针和数组复习 | 2 | 熟练掌握指针和数组的使用 | 基本技能训练 |
2 | 线性表的操作 | 6 | 掌握单链表的基本操作,能够使用线性表处理实际问题。 | 基本技能训练、综合性实验 |
3 | 栈和队列的操作 | 4 | 掌握栈和队列的基本操作。 | 基本技能训练 |
4 | 串的基本操作及匹配算法 | 2 | 掌握串的基本操作及BF匹配算法 | 基本技能训练 |
5 | 数组的操作 | 2 | 掌握动态数组及压缩数组的操作 | 基本技能训练 |
6 | 递归算法设计 | 2 | 掌握简单递归算法的设计。 | 基本技能训练 |
7 | 二叉树的操作 | 6 | 掌握二叉树的构造,遍历,节点个数 | 基本技能训练 |
8 | 图的实现 | 4 | 掌握图的基本实现方法:邻接矩阵 | 基本技能训练 |
9 | 排序 | 4 | 掌握常用排序法算法,其特点及其实现,比较其执行速度。 | 基本技能训练 |
10 | 查找 | 4 | 掌握静态查找和二叉排序数算法 | 基本技能训练 |
四、实验考核
实验成绩:实验教学过程成绩、实验报告成绩,各占50%。
实验过程表现成绩:包括学习态度是否认真、实验操作是否正确规范、基本技能掌握程度、是否具有创新意识等方面。
实验报告成绩:包括实验报告格式是否正确、原理是否论述清楚、实验结果分析讨论是否符合逻辑,报告字迹是否清楚等方面。