2数据结构课程教案Word格式.docx
- 文档编号:21179657
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:61
- 大小:107.93KB
2数据结构课程教案Word格式.docx
《2数据结构课程教案Word格式.docx》由会员分享,可在线阅读,更多相关《2数据结构课程教案Word格式.docx(61页珍藏版)》请在冰豆网上搜索。
实践
实验
授课专业
计算机科学与技术
授课班级
09计算机本科
任课教师
英锋
职称
教授
教学目的和要求
数据结构是计算机学科的一门核心专业基础课程,是计算机程序设计的重要理论和实践基础。
本课程讨论了软件设计中经常遇到的线性表、堆栈、队列、串、数组、二叉树、图等典型数据结构的设计方法以及各种典型排序和查找算法的性能和设计方法,并介绍了各种典型数据结构的应用。
通过本课程的学习,学生对软件设计的基本要素和软件的基本结构有了深入理解,并通过算法设计方法学习和上机编程实践,编程能力有了进一步提高。
课程要求掌握主要内容包括:
线性表、堆栈、队列、串、数组、树、二叉树、图等典型数据结构问题的逻辑结构、存储结构和操作的实现方法,各种典型的排序和查找算法,以及递归算法的设计方法。
通过本课程的学习,应使学生掌握各种数据结构的特点:
存贮表示、运算方法以及在计算机科学中最基本的应用,培养、训练学生选用合适的数据结构和运用C语言编写质量高、风格好的应用程序及初步评价算法程序的能力;
为编译技术、操作系统和数据库等后续课程的学习以及为应用软件特别是非数值应用软件的开发打下良好的理论基础和实践基础。
要求结合实际问题,学会分析计算机加工的数据对象的特性,能够选择适当的数据结构和存储结构以及相应的算法,并初步掌握算法的简单时间复杂度分析方法,训练掌握各种数据结构的表示方法和实现的算法。
⑴知识要求:
学生通过学习该课程后主要应掌握以下内容:
①掌握程序设计的基本原理和方法②了解对各种抽象数据类型的性质③掌握处理各种抽象数据类型的基本算法④初步掌握算法的简单时间复杂度分析方法
⑵素质要求:
学生通过学习该课程后能够运用数据结构的思想,针对不同数据对象的特性,能够选择适当的数据结构和存储结构以及相应的算法,解决实际的问题。
⑶能力要求:
学生通过学习该课程后能够应用一门程序设计语言进行各种应用系统的设计、开发及维护。
教学重点、难点
本课程的重点内容是如何分析现有的实际数据,从中找出规律,抽象出对应的抽象数据类型,进而设计出各种基本算法。
讲课过程中应尽量多举实例,通过举例来一步步引导学生学会如何分析数据、查找规律、抽象成数据类型和编写算法。
教学重点:
线性表、堆栈、队列、二叉树、图典型数据结构问题的逻辑结构、存储结构和操作的实现方法,各种典型的排序和查找算法思想。
难点是各种数据结构的应用和进行操作实现,包括哈夫曼树及其应用、最短路径、哈希表、快速排序、基数排序等,必须通过学生自己多做分析和实践,才能更好地掌握。
教材和参考书
指定教材:
严尉敏吴伟民主编,数据结构(C语言版),清华大学出版社,2002年。
教学参考书:
1严蔚敏,吴伟民,米宁编著·
数据结构题集·
C语言版,北京,清华大学出版社,1999.6
2廖荣贵,许正宪,王龙发编著·
数据结构算法,北京,清华大学出版社,2004.11
3李春葆编著·
数据结构习题与解析·
第二版,北京,清华大学版社,2004.2
4梁作娟,胡伟,唐瑞春编著·
数据结构习题解答与考试指导,北京,清华大学出版社,2004.11
5张铭,刘晓丹译·
数据结构与算法分析·
C++版,电子工业出版社
唐山师范学院课程教案(章节备课)
授课题目(章节)
第一章绪论
授课类型
理论课
授课时间
第1周至第2周共7学时
教学目的要求:
熟悉数据结构中常用的C语言数组、函数、指针、结构体、类型定义、malloc、realloc、free、sizeof、类C语言及C++引用类型;
掌握数据结构的基本概念,抽象数据类型在软件设计中的意义,算法的概念和算法的时间复杂度分析,了解算法的描述和评价。
教学要点:
1数据结构课程的主要内容;
2涉及的基本概念和术语;
3抽象数据类型在软件设计中的意义;
4算法的概念、算法设计的要求和算法的时间复杂度、空间复杂度分析;
教学进程:
1复习在数据结构的学习中涉及到的C和C++中的重点内容,主要是数组、函数、指针、结构体、类型定义、malloc函数、realloc和free函数的内容;
理解类C语言。
重点是指向结构体变量的指针及类型定义;
2讲授数据结构课程的主要内容以及在软件分析和设计中意义;
3讲授抽象数据类型在软件设计中的意义;
4讲授算法的概念和算法的时间复杂度分析方法;
5例题讲解算法的时间复杂度分析方法;
6作业;
对于重点和难点,通过例题讨论讲解。
本课程的主要内容,基本概念,抽象数据类型,算法和算法的时间复杂度分析
教学难点:
C语言中链表和数据结构、算法的时间复杂度分析
教学方法与手段
课堂教学以课堂讲授为主,采用多媒体教学方式以增大信息量,对重点和难点的算法核心部分通过板书进行详细讲解。
思考题(讨论题)及作业(有单元课时教案的本项可不填):
参考文献(含参考书、有关资料出处、相关课程网站网址等):
课后自我总结分析
本章首先复习了在数据结构教学中将要用到C语言和C++的主要知识。
通过教学过程中的提问、课后作业的情况来看,虽然在新的人才培养方案中增加了C语言程序设计和C++与面向对象程序设计的课程设计的学时比例,但学生对C语言的掌握依然比较差,今后应重点加强学生上机动手能力。
在介绍数据结构的研究目的和研究内容时学生比较容易掌握,以后这方面的知识应在介绍C语言知识时提前布置学生进行预习,教学时采取讨论的形式进行。
算法的时间复杂度和空间复杂度学生比较迷惑,应在C语言复习中就提前提出这一问题,给学生思考的空间。
唐山师范学院课程教案(课时单元备课)
授课题目(或主题):
C语言重点回顾(数组、函数、指针、结构体)
授课类型
第1周第1节
教学目标或要求:
熟悉数据结构中常用的C语言数组、函数、指针、结构体。
1数组:
一维数组的定义、引用、初始化;
二维数组的定义、引用、初始化。
2函数的定义、形式参数、实际参数、函数的返回值、函数原型;
函数调用的形式:
函数语句;
函数表达式;
函数参数、函数原型(被调函数的声明)、函数可以递归调用、数组名作为函数参数。
3地址和指针的概念;
指针的定义和引用;
指针变量作为函数的参数;
数组作为函数指针字符串指针指向函数的指针返回指针值的函数指针数组指向指针的指针。
4结构体:
定义结构体的三种方法;
结构体变量的引用、初始化;
结构体数组的定义、初始化;
指向结构体变量的指针。
1讲授数据结构课程的主要内容以及在软件分析和设计中意义;
2讲授C语言中的主要数据结构:
数组;
3通过一个C语言教材上的例子讲解函数的概念;
4详细讲解指针的定义、引用、指针作为函数参数;
5用一个具体例子讲解结构体,重点讲解结构体的定义及结构体数组。
数组元素的引用、函数的定义、数组名作为函数,形参与实参的关系、指针的应用,结构体数组的应用、指向结构体变量的指针。
数组名作为函数参数、指针、指向结构体变量的指针
教学手段与方法:
思考题、讨论题、作业:
1使用C语言写一个函数sort,对一整型数组按选择法进行升序排序,形参、实参均用数组名。
另写一个主程序,在主程序中定义一个整型数组,在主程序中输入数组内容,调用sort排序,然后在主程序中输出数组内容。
2将上题分别改为实参用数组、形参用指针;
形参用数组,实参用指针;
只写出不同部分。
参考资料(含参考书、文献等,有章节教案的本项可不填):
C语言重点回顾(类型定义、malloc、realloc、free、sizeof、类C语言及C++引用类型)
第1周第2节
熟悉数据结构中常用的C语言类型定义、malloc、realloc、free、sizeof、类C语言及C++引用类型。
1类型定义:
数据类型定义方法;
使用新类型定义变量;
2三个函数和一个运算符:
malloc()、realloc()、free()的sizeof;
3C++引用类型:
引用的概念;
引用作为函数的参数;
4类C语言
1复习上节课主要内容
2讲授类型的定义
3讲授三个常用内存分配函数和长度运算符
4复习C++的引用类型
5讲授数据结构中描述算法的方法:
类C语言
使用类型定义结构体类型;
三个内存分配函数,类C语言
三个函malloc()、realloc()、free(),类C语言
1写一个程序,从键盘输入1至10,用带头结点的线性单链表进行存储,并按逆序输出。
2分别用C和C++各写一个主程序和一个主函数,在主程序中输入两个整数a和b,调用函数swap将两个数交换后输出。
体会两种语言的不同
绪论
第2周第1节
了解数据结构课程的主要内容及,涉及的基本概念,理解抽象数据类型在软件设计中的意义,掌握算法的概念和算法的时间复杂度分析。
1掌握数据结构的基本概念
2抽象数据类型在软件设计中的意义
3算法的概念和算法的时间复杂度分析
2讲授抽象数据类型在软件设计中的意义;
3讲授算法的概念和算法的时间复杂度分析方法;
4例题讲解算法的时间复杂度分析方法;
5作业
本课程的主要内容,基本概念,抽象数据类型,算法的时间复杂度分析
算法的时间复杂度分析
1为什么要学习《数据结构》?
2学习《数据结构》什么内容?
3如何学习《数据结构》?
第二章线性表
第2周至第4周共13学时
理解线性表的定义和线性表基本操作的功能;
掌握线性表的顺序和链式存储结构;
掌握顺序表的设计及应用;
掌握单链表的设计及应用。
1线性结构性质:
四点;
2线性表的类型定义:
概念、长度、抽象数据类型定义,基本操作的应用;
3线性表的顺序存储结构、构造一个空的线性表、线性表的插入操作、线性表的删除操作、线性表的查找、线性表的合并,插入、删除算法的算法分析;
4线性表的链式实现、返回线性表第i个数据元素的值、在线性表第i个位置之前插入元素e、在带头结点的线性表L中删除第i个元素、链表的合并;
5静态链表、循环链表、双向链表;
1讲授本章节的基本概念,先逻辑结构,后存储结构;
2讲授各存储结构下操作实现的主要思想;
3在C++开发环境下,计算机演示完整应用程序的结构,以及编辑、编译和运行的方法;
4例题讲解;
5作业
对于重点和难点,通过程序演示,作业来突出。
线性表的定义和抽象数据类型;
顺序和链式存储结构;
顺序表的设计;
单链表的设计,算法分析。
顺序表操作的算法设计;
单链表操作的算法设计;
完整应用程序的结构
本章主要讨论非数值计算模型下的最典型的线性结构,线性表。
主要包括三个方面的内容,
(1)线性表的定义;
(2)线性表的存储结构(主要包括顺序存储结构和链式存储结构)及其相应操作的实现;
(3)线性表的应用。
在教学过程中最突出的问题是:
学生可以理解教师的教学内容,对算法的演示也没有问题,但涉及到自己动手设计一个和课上教学内容相近的算法就无所适从了,反映了学生的实际动手能力。
对顺序存储的线性的理解基本上没有问题,约85%的同学可以正确理解,但涉及到链式存储结构时根据作业情况,就只大约一半的同学能应用了。
按照数据结构通常的教学要求看应有75%以上有同学可以正确理解,主要问题出在教师和同学有交流上,以后在教学中应该增加沟通的机会。
线性表抽象数据类型及线性表的顺序表示和实现
第2周第2节
理解线性表的定义和抽象数据类型,掌握线性表的顺序存储结构,掌握线性表的顺序表示和操作实现并能灵活应用。
1概念和术语:
线性表前趋和后继线性表的长度空表表头元素表尾元素结点首元结点;
2线性表的特点;
3线性表的顺序存储结构(顺序表);
4C语言中线性表顺序存储空间的两种分配方法;
静态分配、动态分配;
5线性表顺序存储结构的优缺点;
6线性表的逻辑结构特征以及必要的基本运算的实现;
7线性表的顺序存储结构以及基本运算的实现、算法分析;
1先介绍线性表的定义和抽象数据类型,用例子说明线性表的概念和定义;
2画图讲解顺序存储结构;
3讲解线性表的顺序表示和操作实现,对于每个算法步骤画图说明;
4分析线性表插入和删除算法的时间复杂度,由此得出线性存储结构的缺点。
顺序存储结构;
线性表的顺序表示和操作实现。
顺序表操作的算法设计
1写出将顺序表L就地逆置的算法
2若顺序表L的数据元素按升序排列,要求将e入到顺序表中的合适位置,以保证表的有序性,试给出其算法。
线性表的链式表示及表现(链表的插入、删除)
第3周第1节
理解链式存储结构的概念,掌握线性表的链式表示和操作实现并能灵活应用。
1线性链表的特点
2链表的抽象数据类型
3线性表的链式存储结构以及基本运算的实现
4线性表的链式存储结构的优缺点
1复习讲解顺序表的操作实现,对于每个算法步骤画图说明;
2用C开发环境演示2个完整顺序表应用程序的例子;
3画图讲解链式存储结构;
4讨论带头结点单链表和不带头结点单链表的区别和优缺点;
5讲解线性表的带头结点单链表表示和操作实现,对于每个算法步骤画图说明;
链式存储结构;
线性表的链式表示和操作实现。
单链表操作的算法设计
1写出将带头结点的线性单链表L就地逆置的算法
2试将一个无序的线性表L(11,16,8,5,14,10,38,23)转换成一个按升序排列的有序线性表(用链表实现)。
线性表的链式表示及表现(链表的合并、静态链表)
第3周第2节
掌握链表的存储结构和基本操作,了解静态链表的基本概念和操作。
教学要点及教学进程:
1链表的合并:
两个有序链表合并为一个仍然有序的链表
2静态链表:
用一维数组描述线性链表;
静态链表的查找
1回顾第一节两个非递增有序的线性表合并一个仍然有序表的操作,阐明算法的设计取决于逻辑结构,算法的实现取决于物理结构。
2结合原算法讲解单链表的合并操作实现,对于每个算法步骤画图说明
3讨论链式存储和顺序存储的优缺点
4将两种存储结构进行合并考虑,构造出静态链表。
5静态链表的应用:
集合运算
6画图讲解静态链表的结构
1链表的合并算法
2静态链表的基本操作
1静态链表的基本操作
1有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中多余的元素值相同的结点。
2线性表的顺序存储结构和链式存储结构各有什么优缺点?
线性表的链式表示及表现(循环链表、双向链表的表示、插入、删除)
第4周第1节
理解循环单链表的概念和算法设计方法,掌握双向链表的算法设计方法,
1循环单链表的概念
2循环单链表的算法设计思路
3双向链表的算法设计思想及实现
1画图讲解循环单链表的结构;
2结合图讲授循环单链表的算法思想;
3画图讲解双向链表的结构;
4双向链表与单链表操作相同和不同的部分;
5讲解双向链表的插入操作的实现
6讲解双向链表的删除操作的实现
7对于每个算法步骤画图说明;
双向链概念和双向链表的操作实现
双向链表的操作实现
1设有一个循环双链表,其中一个结点的指针为p,编写一个算法将p与其后续结点进行交换
2画出下列数据结构的图示:
①顺序表②单链表③双链表④循环链表
一元多项式的表示和相加、线性表的应用举例
习题课
第4周第2节
掌握一元多项式表示方法,学会使用线性表的线性表示和基本操作解决实际问题。
1一元多项式表示方法
2一元多项式表示基本操作
3用实际程序例子说明数据结构问题在软件设计中的作用和基本方法,顺序表完整程序例子,单链表完整程序例子
1讲授一元多项式表示方法
2讲授一元多项式表示基本操作算法
3讲解作业
4用C++开发环境演示完整程序的例子;
5演示C++开发环境下的程序设计方法
6理解数据结构问题在软件设计中的作用和基本方法
7为随后的学生上机实验打下基础
1多项式相加的C++程序
2顺序表完整程序例子
3单链表完整程序例子
2理解数据结构问题在软件设计中的作用和基本方法
1从顺序表中删除重复的元素,并使剩余元素间的相对次序保持不变。
2用单链表表示集合,设计算法求两个集合的交
第三章栈和队列
第5周至第7周共12学时
理解堆栈的概念,掌握顺序堆栈和链式堆栈的设计方法;
理解队列的概念,掌握顺序循环队列和链式队列的设计方法;
了解堆栈和队列的应用方法,掌握堆栈和队列的基本应用。
堆栈的基本概念、堆栈的抽象数据类型定义、堆栈的顺序表示和实现、堆栈的链式表示和实现;
堆栈应用(数制转换问题、括号匹配问题等、行编辑程序、迷宫求解、表达式求值等);
栈与递归的实现;
队列的基本概念、队列的抽象数据类型定义、顺序队列、顺序循环队列、链式队列、队列应用。
讲授栈的概念、抽象数据类型定义、表示和实现
讲授队列的概念、抽象数据类型定义、表示和实现
讲授栈和队列的应用
顺序堆栈和链式堆栈的设计方法;
顺序循环队列和链式队列的设计方法。
顺序循环队列的几种典型队空和队满判断方法;
堆栈和队列的实现。
课堂教学以课堂讲授为主,采用多媒体教学方式以增大信息量,对重点和难点的算法的核心部分通过提问及增加板书进行详细讲解。
对算法的实现要求采用VC++开发环境,配
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程 教案