当前位置:文档之家› 数据结构-Python语言描述教案

数据结构-Python语言描述教案

教 学内 容(讲授提纲)
一 栈
栈的概念:栈是一种特殊的线性表,其插入,删除操作只能在表的尾部进行。在栈中允许进行插入,删除操作的一端称为栈顶,另一端称为栈底。
在栈{a0,a1,a2,……,an-1}中a0成为占地元素,an-1成为栈顶元素。通常,栈的插入叫做入栈,站的删除操作交出栈。
栈的抽象数据Python接口包含了栈的主要基本操作,如果要使用这个接口还需要具体的类来实现。栈的Python接口的实现方法主要有以下两种:
算法描述:算法可以采用1)自然语言2)程序设计语言3)伪代码多种语言来描述
P9【例1.3】
三算法分析
算法分析是主要是通过某种方法讨论算法的复杂度,评价算法的效率,以便在解决实际问题时根据实际情况和算法的优缺点对算法进行取舍。
四算法的时间复杂度
是指算法的执行时间虽问题规模的变化而变化的趋势,反映算法执行时间的长短。执行时间是用算法编写的程序在计算机上运行的时间,他是算法中涉及的所有的基本运算的执行时间之和。
单链表的建立操作
1)头插法P26【算法2.9】
2)尾插法P27【算法2.10】
本章节的教学重点、难点
本章重点是熟练掌握顺序表(P17-21)和单链表(P22-27)上实现的各种基本算法及相关的时间性能分析,难点是能够使用本章学到的基本知识设计有效算法与线性表相关的应用问题。
教学方法、教学手段:
1.开始到顺序表中各种操作实现
4)连接操作
5)比较操作 主要步骤如下:
1)确定需要Biblioteka 较的字符的个数n为两个字符串长度的较小值。
2)从下标0至n-1依次进行比较P54-55[【算法 4.4】【例4.1】]
链串的两种存储结构P55图4.2
串的匹配模式
串的模式匹配也叫查找定位,指的是在当前串中的寻找模式串的过程,主要的模式匹配算法有Brute-Force算法和KMP算法。
4)在插入位置及其新的数据元素。
5)表长加1.P19【算法2.1】
删除操作
P20图2.4主要步骤为:
1)判断参数i是否满足i<=i<=curLen-1,若不满足则抛出异常。
2)将第i个数据元素之后的数据元素都向前移动一个存储单元。
3)表长减1.P20【算法2.2】
查找操作
主要步骤为将x与顺序表中的每一个数据元素的值进行比较,若相等,则返回该数据元素的位置;若比较结束未找到等值的数据元素,返回-1.
顺序串基本操作的实现
1)求子串操作;P53【算法 4.1】
2)插入操作 主要步骤如下:
1)判断参数i是否0<=i<=n,若不满足,则抛出异常。
2)重新分配存储空间为n+m,m为插入的字符串str的长度。
3)将第i个及之后的数据元素向后移动m个存储单元。
4)将str插入到字符串从i开始的位置。
3)删除操作P54[【算法 4.2】【算法4.3】]
数据抽象:数据抽象指“定义和实现相分离”,即将一个类型的数据及其上的操作的逻辑含义和具体实现相分离,只考虑执行什么操作,而不考虑怎样实现这些操作。
抽象数据类型:抽象数据类型是从问题的数学模型中抽象出来的逻辑结构定义在逻辑结构上的一组操作,进描述了数据的特性和数据操作的语法规则,隐藏了数据的存储结构和操作的实现细节。P6【例1.2】
4)需要进行存储空间的预先分配,可能会造成空间浪费,但存储密度较高
描述:P17
插入操作:
P19图2.3主要步骤为:
判断顺序表的存储空间是否已满,若已满则抛出异常。
1)判断参数i的值是否满足0<=i<=curLen,若不满足则抛出异常。
2)将插入位置及其之后的所有数据元素后移一个存储位置。
3)在位置i出插入新的数据元素x。
P21【算法2.3】【例2.3】P22【例2.4】
三线性表的链式存储和实现
采用链式存储方式存储的线性表称为链表,链表是用若干地址分散的存储单元存储数据元素。逻辑上相邻的数据元素在屋里位置上不一定相邻,必须采用附加欣喜表示数据元素之间的逻辑关系,因此链表的每一个结点不仅包含元素本身的信息-数据域,而且包含元素之间的逻辑关系的信息,即逻辑上相邻结点地址的指针域。
串的比较规则和字符的比较规则有关,字符的比较规则由所属的字符集的编码决定。
字符串的抽象数据类型Python抽象类包含了串的主要基本操作,如果要使用这个接口,还需要具体的类来实现。串的Python抽象类的实现方法主要有以下两点:
1)基于顺序存储的实现,为顺序串;
2)基于链式存储的实现,为链串。
顺序串
顺序串与顺序表的逻辑结构相同,存储结构类似,均可用数组来存储数据元素。但串具有独特的不同雨线性表的操作,属于特殊类型的线性表。 如P51图4.1
P42图3.12所示为链队列进行入队操作的状态变化。
本章节的教学重点、难点:
本章重点是掌握栈(P31-36)和队列(P37-44)在两种存储结构上实现的基本运算.
教学方法、教学手段:
1.栈的基本概念和顺序栈
2.链栈、中缀表达式求值
使用教具:计算机和投影仪
作业、讨论题、思考题:
P47、48、49
讲授章节
链栈进行出栈操作后的状态变化如图3.5所示P40
P36[【算法3.4】【例3.2】]P37[【例3.3】【例3.4】]
二 队列
队列的基本概念
队列是一种特殊的线性表,其插入操作只能在表的尾部进行,删除操作只能在表头进行。
通常,队列的插入操作交入队,队列的删除操作叫出队。没有数据元素的队列称为空队列。
队列的抽象数据Python接口包含了队列的主要的基本操作,如果要使用这个接口,还需要具体的类来实现。队列的Python抽象类的实现方法主要有以下两种:
链栈基本操作的实现
1)入栈操作,主要步骤如下
1)改造购书值域为x的新结点。
2)改变新结点和首结点指针域,是新结点成为新的栈顶顶点。
链栈进行入栈操作后的状态棉花如图P363.4所示
P36【算法3.3】
2)出栈操作,主要步骤如下
1)判断链栈是否为空,若空则返回null。
2)修改top指针域的值,返回被删结点的数据域值。
五算法的时间/空间复杂度
·.算法分析举例书本P11【例1.4】
本章节的教学重点、难点:
1.重点是数据结构的基本概念
2.难点是时间复杂度分析
教学方法、教学手段:
1.介绍到算法概念
2.算法分析和举例
使用教具:计算机和投影仪
作业、讨论题、思考题:
P12
讲授章节
第二章线性表
授课时数
7
教学目的:
1.介绍线性表的基本概念(P15)和各种存储表示方法(P16-18)
数据的逻辑结构可分为四类:1)集合2)线性结构3)树形结构4)图形结构P3【图1.2】
数据的存储结构可分为四类:1)顺序存储结构2)链式存储结构3)索引存储结构4)散列存储结构
数据操作:1)创建操作2)插入创造3)删除创造4)查找创造5)修改操作6)遍历操作7)销毁操作
数据类型:是一组性质相同的值的集合和定义在此集合上的一组操作的总称。
教案
讲授章节
第1章绪论
授课时数
2
教学目的:
1.介绍数据结构的基本概念(P2)
2.算法的描述(P8)和算法时间复杂度(P10)空间复杂度(P10)
3.要求了解本章介绍的各种基本概念和术语,是全书的基础。
教 学内 容(课程导入)
一数据结构
数据结构基本概念:指的是相互之间存在着一种或者多种关系的数据元素的集合,也叫数据元素类,是数据的一个自己,数据元素是数据对象的一个实例。
1)基于顺序存储的实现,为顺序队列。
2)基于链式存储的实现,为链队列。
顺序队列
顺序队列的存储结构与顺序栈类似,可用数组实现,因为入队和出队操作分别在对为和对手进行,所以增加变量front来只是队首元素的位置,rear指示队尾元素的下一个存储单元的位置。顺序队列进行入队操作的状态变化如P39图3.7进行出对操作后的状态变化P37图3.8
·通常采用算法的渐进分析中的大O表示作为算法时间复杂度的渐进度量值,称为算法的渐进时间复杂度。
·循环语句的时间代价一般可用一下3条原则进行分析:
1)一个循环的时间代价=循环次数每次执行的基本指令数目。
2)多个并列的循环的时间代价=每个循环的时间代价之和。
3)多层嵌套循环的时间代价=每层循环的时间代价值积。
Brute-Force算法
是从主串的第一个字符开始和模式串的第一个字符进行比较,若想等,则继续比较后续字符;否则从主串的第二个字符开始重新和模式串进行比较。以此类推,知道模式串的每个字符一次与朱传的字符相等,匹配成功。P56【算法4.5】
KMP算法
Kmp算法的主要思想是当某次匹配失败时主串的开始标位置不会推推,而是利用部分字符匹配的结果将模式串向右移动较远的距离后再继续进行比较。
2.顺序表算法钟)
使用教具:计算机和投影仪
作业、讨论题、思考题:
P28-30
讲授章节
第三章栈
授课时数
6
教学目的:
1.介绍栈(P31)和队列(P37)的逻辑结构定义
2.两种顺序结构上如何实现栈(P32-36)和队列(P38-46)的基本运算。
3.要求在掌握栈和队列的特点的基础上,懂得在什么样的情况下能够使用栈或队列。
1)基于顺序存储的实现,为顺序栈;
2)基于链式存储的实现,为链栈。
顺序栈
顺序栈基本操作的实现入栈操作(P33图3.1)
1)判断顺序栈是否为满,若满则抛出异常。
2)将x存入top所指的存储单元位置。
3)Top加1.P33【算法3.1】P33【算法3.2】P34【例3.1】
链栈
链栈的存储结构 :P34图3.3
相关主题