《数据结构》授课教案.docx
- 文档编号:1456299
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:14
- 大小:38.39KB
《数据结构》授课教案.docx
《《数据结构》授课教案.docx》由会员分享,可在线阅读,更多相关《《数据结构》授课教案.docx(14页珍藏版)》请在冰豆网上搜索。
《数据结构》授课教案
授课教案
2010~2011学年1学期
开课单位:
数学计算机科学学院
课程名称:
数据结构
课程性质:
专业基础课
学分:
3
总学时:
51
理论学时:
51
实验学时:
0
机动学时:
0
授课专业:
计算机科学技术/地理信息系统
授课年级:
20XX级/20XX级
学生人数:
80/37
多媒体授课时数比例:
100%
主讲教师:
左开中
职 称:
副教授
《数据结构》授课教案
周次
第1周
第1次
章节名称
第一章:
绪论
1.1什么是数据结构
1.2基本概念和术语
1.3抽象数据类型的表示和实现
1.4算法与算法分析
授课方式
多媒体教室课堂讲授
教具准备
自制PPT电子课件
教学
目的
1.了解学习掌握数据结构的意义及数据结构的基本内容;
2.掌握数据结构及数据、数据元素等相关概念;
2.掌握抽象数据类型ADT的定义、表示与实现
4.理解时间复杂度概念和基本的估算方法。
教学
重点
1.数据结构的基本概念
2.算法分析
教学
难点
1.抽象数据类型ADT的定义、表示与实现
2.算法时间复杂度及其计算
授课要点
1.1什么是数据结构
用3个引例:
1.图书书目自动检索
2.人机对奕
3.交通灯管理
引出《数据结构》的研究内容
1.2基本概念和术语
1.数据
2.数据元素、数据项
3.数据对象、数据结构
4.四类基本逻辑结构:
集合、线性结构、树形结构、图形结构或网状结构。
5.数据结构一般包括三方面的内容:
逻辑结构、存储结构(物理结构)和数据的运算
算法的设计取决于选定的数据逻辑结构,而算法的实现依赖于采用的存储结构。
6.数据的两种存储结构:
顺序存储结构和链式存储结构
1.3抽象数据类型的表示与实现
ADT的概念和类C语言
1.4算法和算法分析
1.4.1算法
算法的定义
算法具有五个重要特性:
有穷性、确定性、可行性、输入、输出
1.4.2算法设计的要求
正确性,可读性,健壮性,高效率低存储
1.4.3算法效率的度量
时间复杂度
1.4.4算法的存储空间需求
空间复杂度
课堂讨论
与练习
1.什么是数据结构?
数据、数据对象、数据元素、数据项等术语的关系和区别?
2.数据类型和抽象数据类型是如何定义的,二者有何相同和不同之处?
抽象数据类型的主要特点是什么?
使用抽象数据类型的主要好处是什么?
3.按照阶由低到高的顺序排列下列时间复杂度:
作业
1.分析并计算下面各程序段的最大语句频度和算法的时间复杂度。
1)for(i=0;i for(j=0;j A[i][j]=0; 2)for(i=0;i for(j=0;j A[i][j]=0; 3)s=0; for(i=0;i for(j=0;j for(k=0;k s=s+B[i][j][k]; sum=s; 4)i=s=0; while(s {i++; s+=i;//s=s+i } 5)i=1; while(i<=n) i=i*2; 2.简答题 1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系? 2)若逻辑结构相同但存储结构不同,则为不同的数据结构。 这样的说法对吗? 举例说明之。 3)当你为解决某一问题而选择数据结构时,应从哪些方面考虑? 4)有实现同一功能的两个算法A1和A2,其中A1的时间复杂度为Tl=O(2n),A2的时间复杂度为T2=O(n2),仅就时间复杂度而言,请具体分析这两个算法哪一个好。 课后记要 周次 第2周 第1次 章节名称 第二章: 线性表 2.1线性表的类型定义 2.2线性表的顺序表示与实现 授课方式 多媒体教室课堂讲授 教具准备 自制PPT电子课件 教学 目的 1.了解线性表的结构特点; 2.掌握线性表的逻辑结构; 3.掌握线性表的顺序存储结构及其基本运算的实现; 教学 重点 1.理解线性表的逻辑结构特性; 2.熟练掌握线性表的顺序存储结构的描述方法,以及在该存储结构下的基本操作; 教学 难点 1.能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其应用场合; 2.使用本章所学的基本知识设计有效算法,解决与线性表相关的应用问题。 授课要点 2.1线性表的类型定义 1.线性表的定义 (a1,…,ai-1,ai,ai+1,…an) 2.定义在逻辑结构上的运算 表的初始化、求表长、取表中的结点、查找结点、插入结点和删除结点等。 3.抽象数据类型线性表的定义 2.2线性表的顺序表示和实现 1、线性表的顺序表示: 指的是用一组地址连续的存储单元依次存储线性表的数据元素。 用物理位置来表示逻辑结构。 LOC(ai+1)=LOC(ai)+l LOC(ai)=LOC(a1)+(i-1)*l 2、顺序表的特点: 随机存取 3、线性表的动态分配顺序存储结构(用一维数组) #defineLIST_INIT_SIZE100 #defineLISTINCREAMENT10 typedefstruct{ ElemType*elem; intlength; intlistsize; }SqList; 4、顺序表的运算 顺序表容易实现访问操作,可随机存取元素。 但插入和删除操作主要是移动元素。 ⑴初始化操作 ⑵插入操作 (3)删除操作 5、应用实例 课堂讨论 与练习 1.线性表的两种存储结构的优缺点? 它们各自适用场合是什么? 2.线性表的顺序存储结构具有三个弱点: 1)在插入删除操作时,需要大量移动元素;2)由于难以估计,必须预先分配较大的空间,使得存储空间不能得到充分利用;3)表的容量难以扩充。 线性表的链式存储结构是否一定都能克服上述三个弱点,试讨论。 作业 1.设计一个算法,从给定的顺序表L中删除元素值在X到Y之间的所有元素,要求以较高的效率来实现,要求算法的时间复杂度为O(n)。 2.设有一个顺序表L,其元素为整型数据,设计一个算法将L中所有小于0的整数放在前半部分,大于等于0的整数放在后半部分。 3.设计一个高效算法,将顺序表中的所有元素逆置,要求算法的时间复杂度为O(n) 课后记要 周次 第3周 第1次 章节名称 第二章: 线性表 2.3线性表的链式表示与实现 2.4一元多项式的表示及相加 授课方式 多媒体教室课堂讲授 教具准备 自制PPT电子课件 教学 目的 1.掌握线性表的链式存储结构及其基本运算的实现。 教学 重点 1.熟练掌握线性表链式存储结构的描述方法,灵活使用单链表、双链表、循环链表,学会在相应存储结构下实现其各种基本算法及相关的时间性能分析。 教学 难点 1.三种链表的插入删除算法 2.使用本章所学的基本知识设计有效算法,解决与线性表相关的应用问题。 授课要点 2.3线性表的链式表示和实现 2.3.1线性链表 1、线性表链式存储结构的特点 相关概念: 结点、数据域、指针域、头结点、头指针 2、链式存储结构的优点: 插入、删除操作是不再需要移动大量的元素,但失去了顺序表的可随机存取特点。 3、链表的分类: 单链表、循环链表和双向链表。 3、单链表: (1)单链表概念: 链表中的每一个结点中只包含一个指针域的称为单链表。 (2)单链表的存储结构定义 typedefstrucLNode{ ElemTypedata; structLNode*next; }LNode,*LinkList; (3)单链表的操作: ●访问: 算法思想: 单链表是非随机存取结构。 每个元素的位置信息都包含在前驱结点的信息中,所以取得第i个元素必须从头指针出发寻找。 设置一个指针变量指向第一个结点,然后,让该指针变量逐一向后指向,直到第i个元素。 ●插入操作: 要在数据元素a和b之间插入元素x。 算法思想: 决定a和b之间的相邻关系是由a的指针决定的。 若要实现插入,生成x结点,然后让a的指针指向x且x的指针指向b。 实现三个元a、x和b的逻辑关系。 设p为指向结点a的指针,s为指向结点x的指针,则修改s、a的指针: s→next=p→next;p→next=s; ●删除操作: 在单链表数据元素a、b、c三个相邻的元素中删除b,算法思想: 就是要让a的指针直接指向c,使b从链表中脱离。 即: p→next=p→next→next。 ●单链表的合并: 例: 将两个有序链表合并为一个有序链表。 设立三个指针pa、pb和pc分别用来指向两个有序链表和合并表的当前元素。 比较两个表的当前元素的大小,将小的元素链接到合并表中,即,让合并表的当前指针指向该元素,然后,修改指针。 在归并两个链表为一个链表时,不需要另建新表的结点空间,而只需将原来两个链表中结点之间的关系解除,重新建立关系。 2.3.2循环链表 1、循环链表: 特点: 表中最后一个结点的指针域指向头结点,整个链表形成一个环。 循环链表可分为单链和多链的。 2、循环链表的操作: 和线性链表基本一致,差别仅在于循环条件判定是否为空改为是否为头指针。 2.3.3双向链表 1、双向链表: 特点: 在双向链表的结点中有两个指针域,分别指向前驱和后继。 双向链表也可以有循环链表。 2、双向链表存储结构定义: typedefstructDuLNode{ ElemTypedata; structDuLNode*prior; structDuLNode*next; }DuLNode,*DuLinklist; 3、双向链表的操作: 双指针使得链表的双向查找更为方便、快捷。 NextElem和PriorElem的执行时间为O (1)。 仅需涉及一个方向的指针的操作和线性链表的操作相同。 插入和删除需同时修改两个方向的指针。 4、双向链表的插入操作 1)p→next=q 2)p→prior=q→prior 3)q→prior→next=p 4)q→prior=p 课堂讨论 与练习 1.在单链表、双链表和单循环链表中,若仅知道指针p指向某结点,不知道头指针(指向头结点的指针),能否将结点*p(即p指向的结点)从相应的链表中删除(不允许进行结点之间数据域的复制)? 若可以,时间复杂度各是多少? 作业 1.设计在一个带头结点的单链表L中删除一个最大值结点的算法。 2.设一个就地算法,将一个头结点指针为La的单链表(其数据域为整数)分解为两个单链表La和Lb,使得La链只含有原链表中数据域大于0的结点,而Lb链中只含有原链表中数据域小于等于0的结点。 课后记要 周次 第4周 第1次 章节名称 第三章栈和队列 3.1栈 3.2栈的应用举例 3.3队列 授课方式 多媒体教室课堂讲授 教具准备 自制PPT电子课件 教学 目的 1.理解栈和队列的操作特点; 2.掌握进栈、出栈等栈的基本操作以及入队和出队等队列的基本操作; 3.掌握编写递归程序的基本方法。 4.掌握栈和队列的顺序和链式存储结构。 5.掌握队列的顺序存储—循环队列。 教学 重点 1.熟悉栈和队列的逻辑结构定义和特性,并在各种问题中灵活使用。 2.熟练栈和队列在两种存储结构(顺序存储结构和链式存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 授课 教案
![提示](https://static.bdocx.com/images/bang_tan.gif)