数据结构-Python语言描述教案.pdf
《数据结构-Python语言描述教案.pdf》由会员分享,可在线阅读,更多相关《数据结构-Python语言描述教案.pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、教 案讲授章节授课时数教学目的:1.介绍数据结构的基本概念(P2)第 1 章 绪论22.算法的描述(P8)和算法时间复杂度(P10)空间复杂度(P10)3.要求了解本章介绍的各种基本概念和术语,是全书的基础。教 学 内 容(课程导入)一一 数据结构数据结构数据结构基本概念:指的是相互之间存在着一种或者多种关系的数据元素的集合,也叫数据元素类,是数据的一个自己,数据元素是数据对象的一个实例。数据的逻辑结构可分为四类:1)集合 2)线性结构 3)树形结构 4)图形结构P3【图1.2】数据的存储结构可分为四类:1)顺序存储结构 2)链式存储结构 3)索引存储结构 4)散列存储结构数据操作:1)创建操
2、作 2)插入创造 3)删除创造 4)查找创造 5)修改操作 6)遍历操作 7)销毁操作数据类型:是一组性质相同的值的集合和定义在此集合上的一组操作的总称。数据抽象:数据抽象指“定义和实现相分离”,即将一个类型的数据及其上的操作的逻辑含义和具体实现相分离,只考虑执行什么操作,而不考虑怎样实现这些操作。抽象数据类型:抽象数据类型是从问题的数学模型中抽象出来的逻辑结构定义在逻辑结构上的一组操作,进描述了数据的特性和数据操作的语法规则,隐藏了数据的存储结构和操作的实现细节。P6【例 1.2】二二 算法算法:算法的定义:算法是有穷规则的集合,其规则确定一个解决某一特定类型问题的指令序列,其中每一条指令表
3、示计算机的一个或者多个操作。算法必须满足五个特性:1)有穷性 2)确定性 3)可行性 4)有输入 5)有输出算法建立在数据结构上,对数据结构的操作需要使用算法来描述。算法设计依赖于数据的逻辑结构,算法实现依赖于数据的存储结构。算法描述:算法可以采用 1)自然语言 2)程序设计语言 3)伪代码 多种语言来描述P9【例 1.3】三三 算法分析算法分析算法分析是主要是通过某种方法讨论算法的复杂度,评价算法的效率,以便在解决实际问题时根据实际情况和算法的优缺点对算法进行取舍。四四 算法的时间复杂度算法的时间复杂度是指算法的执行时间虽问题规模的变化而变化的趋势,反映算法执行时间的长短。执行时间是用算法编
4、写的程序在计算机上运行的时间,他是算法中涉及的所有的基本运算的执行时间之和。通常采用算法的渐进分析中的大 O 表示作为算法时间复杂度的渐进度量值,称为算法的渐进时间复杂度。循环语句的时间代价一般可用一下3 条原则进行分析:1)一个循环的时间代价=循环次数每次执行的基本指令数目。2)多个并列的循环的时间代价=每个循环的时间代价之和。3)多层嵌套循环的时间代价=每层循环的时间代价值积。五五 算法的时间算法的时间/空间复杂度空间复杂度.算法分析举例书本P11【例 1.4】本章节的教学重点、难点:1.重点是数据结构的基本概念2.难点是时间复杂度分析教学方法、教学手段:1.介绍到算法概念2.算法分析和举
5、例使用教具:计算机和投影仪作业、讨论题、思考题:P12讲授章节授课时数教学目的:第二章 线性表71.介绍线性表的基本概念(P15)和各种存储表示方法(P16-18)2.定义在逻 辑结构 上的各种 基本运 算及在 存储结构 上如何 实现这 些基本运 算(P18-22)。3.要求在这些内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题。教 学 内 容(讲授提纲)一一 线性表线性表线性表的 Python 抽象类的实现方法主要有以下两种1)基于顺序存储的实现 2)基于链式存储的实现。二二 线性表的顺序存储线性表的顺序存储定义:是把线性表中
6、的所有元素按照其逻辑顺序依次存储到计算机的内存单元中指定存储位置开始的一块连续的存储空间中,成为顺序表。P17 图 2.2特点:1)在线性表中逻辑上相邻的元素在物理存储位置上也同样相邻。2)可按照数据元素的位序号进行随机存取。3)进行插入,杀出操作需要移动大量的数据元素。4)需要进行存储空间的预先分配,可能会造成空间浪费,但存储密度较高描述:P17插入操作:P19 图 2.3 主要步骤为:判断顺序表的存储空间是否已满,若已满则抛出异常。1)判断参数 i 的值是否满足 0=i=curLen,若不满足则抛出异常。2)将插入位置及其之后的所有数据元素后移一个存储位置。3)在位置 i 出插入新的数据元
7、素 x。4)在插入位置及其新的数据元素。5)表长加 1.P19【算法 2.1】删除操作P20 图 2.4 主要步骤为:1)判断参数 i 是否满足 i=i=curLen-1,若不满足则抛出异常。2)将第 i 个数据元素之后的数据元素都向前移动一个存储单元。3)表长减 1.P20【算法 2.2】查找操作主要步骤为将 x 与顺序表中的每一个数据元素的值进行比较,若相等,则返回该数据元素的位置;若比较结束未找到等值的数据元素,返回-1.P21【算法 2.3】【例 2.3】P22【例 2.4】三三 线性表的链式存储和实现线性表的链式存储和实现采用链式存储方式存储的线性表称为链表,链表是用若干地址分散的存
8、储单元存储数据元素。逻辑上相邻的数据元素在屋里位置上不一定相邻,必须采用附加欣喜表示数据元素之间的逻辑关系,因此链表的每一个结点不仅包含元素本身的信息-数据域,而且包含元素之间的逻辑关系的信息,即逻辑上相邻结点地址的指针域。单链表单链表指结点中只包含一个指针域的链表,指针域中储存着指向后继结点的指针。P22图 2.5、2.6查找操作其主要步骤为将 x 与单链表中的每一个数据元素的数据域进行比较,若想等,则返回该数据元素在单链表中的位置;若比较结束未找到等值的数据元素,返回-1.P24【算法 2.4】【算法 2.5】插入操作主要步骤如下:1)查找到插入位置的前驱结点,即第i-1 个结点。2)创建
9、数据域值为 x 的新节点。3)修改前去结点的指针域为指向新节点的指针,新结点的指针域位指向原第i 个结点的指针。P25【算法 2.6】【算法 2.7】删除操作主要步骤如下1)判断单链表是否为空。2)查找待删除结点的前驱结点。3)修改前驱结点的指针域为待删除结点的指针域。P26【算法 2.8】单链表的建立操作1)头插法 P26【算法 2.9】2)尾插法 P27【算法 2.10】本章节的教学重点、难点本章重点是熟练掌握顺序表(P17-21)和单链表(P22-27)上实现的各种基本算法及相关的时间性能分析,难点是能够使用本章学到的基本知识设计有效算法与线性表相关的应用问题。教学方法、教学手段:1.开
10、始到顺序表中各种操作实现2.顺序表算法钟)使用教具:计算机和投影仪作业、讨论题、思考题:P28-30讲授章节授课时数教学目的:1.介绍栈(P31)和队列(P37)的逻辑结构定义2.两种顺序结构上如何实现栈(P32-36)和队列(P38-46)的基本运算。第三章 栈63.要求在掌握栈和队列的特点的基础上,懂得在什么样的情况下能够使用栈或队列。教 学 内 容(讲授提纲)一一 栈栈栈的概念:栈是一种特殊的线性表,其插入,删除操作只能在表的尾部进行。在栈中允许进行插入,删除操作的一端称为栈顶,另一端称为栈底。在栈a0,a1,a2,an-1中 a0 成为占地元素,an-1 成为栈顶元素。通常,栈的插入叫
11、做入栈,站的删除操作交出栈。栈的抽象数据 Python 接口包含了栈的主要基本操作,如果要使用这个接口还需要具体的类来实现。栈的 Python 接口的实现方法主要有以下两种:1)基于顺序存储的实现,为顺序栈;2)基于链式存储的实现,为链栈。顺序栈顺序栈基本操作的实现入栈操作(P33 图 3.1)1)判断顺序栈是否为满,若满则抛出异常。2)将 x 存入 top 所指的存储单元位置。3)Top 加 1.P33【算法 3.1】P33【算法 3.2】P34【例 3.1】链栈链栈的存储结构:P34 图 3.3链栈基本操作的实现1)入栈操作,主要步骤如下1)改造购书值域为 x 的新结点。2)改变新结点和首
12、结点指针域,是新结点成为新的栈顶顶点。链栈进行入栈操作后的状态棉花如图P36 3.4 所示P36【算法 3.3】2)出栈操作,主要步骤如下1)判断链栈是否为空,若空则返回null。2)修改 top 指针域的值,返回被删结点的数据域值。链栈进行出栈操作后的状态变化如图3.5 所示 P40P36【算法 3.4】【例 3.2】P37【例 3.3】【例 3.4】二二 队列队列队列的基本概念队列是一种特殊的线性表,其插入操作只能在表的尾部进行,删除操作只能在表头进行。通常,队列的插入操作交入队,队列的删除操作叫出队。没有数据元素的队列称为空队列。队列的抽象数据 Python 接口包含了队列的主要的基本操
13、作,如果要使用这个接口,还需要具体的类来实现。队列的Python 抽象类的实现方法主要有以下两种:1)基于顺序存储的实现,为顺序队列。2)基于链式存储的实现,为链队列。顺序队列顺序队列的存储结构与顺序栈类似,可用数组实现,因为入队和出队操作分别在对为和对手进行,所以增加变量 front 来只是队首元素的位置,rear 指示队尾元素的下一个存储单元的位置。顺序队列进行入队操作的状态变化如 P39 图 3.7 进行出对操作后的状态变化P37 图 3.8顺序队列之所以会出现“假溢出”(P40 图 3.9)现象是因为顺序队列的存储单元没有重复使用机制,为了解决顺序队列因数组下标越界而应起的“溢出”问题
14、,课将顺序序列的首位项链,形成循环顺序队列。循环顺序队列进行入队和出对操作后状态变化如P40 图 3.10 P41【例 3.5】【例 3.6】链队列是单链表实现,由于入队和出对分别在队尾和队首进行,不存在在队列的任意位置进行插入和删除的情况,所以不需要设置头结点,只需要将指针front 和 rear 分别指向对手节点和对为节点,每个节点的指针域指向其后继结点即可。P42 图 3.12 所示为链队列进行入队操作的状态变化。本章节的教学重点、难点:本章重点是掌握栈(P31-36)和队列(P37-44)在两种存储结构上实现的基本运算.教学方法、教学手段:1栈的基本概念和顺序栈2链栈、中缀表达式求值使
15、用教具:计算机和投影仪作业、讨论题、思考题:P47、48、49讲授章节授课时数第四章 串和数组5教学目的:1.本章主要是介绍串的基本概念(P50)2.数据类型定义(P50)3.串的存储结构,基本操作实现和应用等(P51)。4.介绍多维数组的逻辑结构特征及存储方式(P60-61),特殊矩阵和稀疏矩阵的压缩存储方法(P61-64)。教 学 内 容(讲授提纲)一一 串串串的概念:字符串也叫串,是有字符组成的有限序列,是一种常用的非数值数据。串的逻辑结构是线性表,串是一种特殊的线性表,其每个数据元素都是一个字符。穿的操作特点与线性表不同,主要是对字串进行操作,通过采用顺序存储结构存储。串的比较规则和字
16、符的比较规则有关,字符的比较规则由所属的字符集的编码决定。字符串的抽象数据类型 Python 抽象类包含了串的主要基本操作,如果要使用这个接口,还需要具体的类来实现。串的Python 抽象类的实现方法主要有以下两点:1)基于顺序存储的实现,为顺序串;2)基于链式存储的实现,为链串。顺序串顺序串与顺序表的逻辑结构相同,存储结构类似,均可用数组来存储数据元素。但串具有独特的不同雨线性表的操作,属于特殊类型的线性表。如 P51 图 4.1顺序串基本操作的实现1)求子串操作;P53【算法 4.1】2)插入操作 主要步骤如下:1)判断参数 i 是否 0=i=n,若不满足,则抛出异常。2)重新分配存储空间
17、为 n+m,m 为插入的字符串 str 的长度。3)将第 i 个及之后的数据元素向后移动m 个存储单元。4)将 str 插入到字符串从 i 开始的位置。3)删除操作 P54【算法 4.2】【算法 4.3】4)连接操作5)比较操作 主要步骤如下:1)确定需要比较的字符的个数n 为两个字符串长度的较小值。2)从下标 0 至 n-1 依次进行比较 P54-55【算法 4.4】【例 4.1】链串的两种存储结构 P55 图 4.2串的匹配模式串的模式匹配也叫查找定位,指的是在当前串中的寻找模式串的过程,主要的模式匹配算法有 Brute-Force 算法和 KMP 算法。Brute-Force 算法是从主
18、串的第一个字符开始和模式串的第一个字符进行比较,若想等,则继续比较后续字符;否则从主串的第二个字符开始重新和模式串进行比较。以此类推,知道模式串的每个字符一次与朱传的字符相等,匹配成功。P56【算法 4.5】KMP 算法Kmp 算法的主要思想是当某次匹配失败时主串的开始标位置不会推推,而是利用部分字符匹配的结果将模式串向右移动较远的距离后再继续进行比较。Kmp 模式匹配算法分析K 值的计算 P57【算法 4.6】Kmp 算法步骤1)计算模式穿的 next函数值2)I 为主串的比较字符位序号,j 为模式串的比较字符位序号。当字符相等时,i,j 分别加 1 后继续比较;否则 i 的值不变,j=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 Python 语言 描述 教案
限制150内