《第10章_数据结构与算法课件.ppt》由会员分享,可在线阅读,更多相关《第10章_数据结构与算法课件.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第10章_数据结构与算法ppt课件(全)第第10章章 数据结构与算法数据结构与算法 计算机基础与计算机基础与Access数据库程序设计数据库程序设计第10章_数据结构与算法ppt课件(全)公共基础知识考试大纲公共基础知识考试大纲一、数据结构与算法一、数据结构与算法二、程序设计基础二、程序设计基础三、软件工程基础三、软件工程基础四、数据库设计基础四、数据库设计基础包含四部分内容:包含四部分内容:第10章_数据结构与算法ppt课件(全)公共基础知识考试大纲公共基础知识考试大纲1. 掌握算法的基本概念。掌握算法的基本概念。2. 掌握基本数据结构及其操作。掌握基本数据结构及其操作。3. 掌握基本排序和
2、查找算法。掌握基本排序和查找算法。4. 掌握逐步求精的结构化程序设计方法。掌握逐步求精的结构化程序设计方法。5. 掌握软件工程的基本方法,具有初步应用相关技掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。术进行软件开发的能力。6. 掌握数据库的基本知识,了解关系数据库的设计。掌握数据库的基本知识,了解关系数据库的设计。基本要求:基本要求:第10章_数据结构与算法ppt课件(全)公共基础知识考试大纲公共基础知识考试大纲1. 算法的基本概念;算法复杂度的概念和意义。算法的基本概念;算法复杂度的概念和意义。2. 数据结构的定义;数据的逻辑结构与存储结构;数据结构的定义;数据的逻辑结构
3、与存储结构;数据结构的图形表示;线性结构与非线性结构的数据结构的图形表示;线性结构与非线性结构的概念。概念。3. 线性表的定义;线性表的顺序存储结构及其插线性表的定义;线性表的顺序存储结构及其插入与删除运算。入与删除运算。4. 栈和队列的定义;栈和队列的顺序存储结构及栈和队列的定义;栈和队列的顺序存储结构及其基本运算。其基本运算。数据结构与算法考试内容:数据结构与算法考试内容:第10章_数据结构与算法ppt课件(全)公共基础知识考试大纲公共基础知识考试大纲5. 线性单链表、双向链表与循环链表的结构及其线性单链表、双向链表与循环链表的结构及其基本运算。基本运算。6. 树的基本概念;二叉树的定义及
4、其存储结构;树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。二叉树的前序、中序和后序遍历。7. 顺序查找与二分法查找算法;基本排序算法顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。(交换类排序,选择类排序,插入类排序)。数据结构与算法考试内容:数据结构与算法考试内容:第10章_数据结构与算法ppt课件(全)一、数据结构与算法一、数据结构与算法 用计算机解决实际问题,需要编写程序。用计算机解决实际问题,需要编写程序。一个程序应一个程序应包括两个方面包括两个方面: 数据结构(数据结构(Data Structure),对数据的描述,对数据的描述,
5、即在程序中要指定即在程序中要指定 数据的类型数据的类型 和和数据的组织形式数据的组织形式; 算法(算法(Algorithm),),是对操作的描述,即操作是对操作的描述,即操作步骤。步骤。 这就是著名计算机科学家沃思(这就是著名计算机科学家沃思(Nikiklaus Wirth)提出的一个公式:)提出的一个公式: 程序程序 = 数据结构数据结构 + 算法算法一、数据结构与算法一、数据结构与算法第10章_数据结构与算法ppt课件(全)考点考点1 算法的基本概念算法的基本概念算法(算法(Algorithm):): 是指解题方案的准确而完整的描述。是指解题方案的准确而完整的描述。算法的基本特征:算法的基
6、本特征: (1)有穷性()有穷性(Finiteness),一个算法应包含有限的操作),一个算法应包含有限的操作步骤而不能是无限的。步骤而不能是无限的。 (2)确定性()确定性(Definiteness),算法中的每一个步骤都应),算法中的每一个步骤都应该是确定的,而不应当是含糊的、模棱两可的。该是确定的,而不应当是含糊的、模棱两可的。 (3)可行性()可行性(Effectiveness),一个算法应该可以有效),一个算法应该可以有效地执行,即算法描述的每一步都可通过已实现的基本运算执地执行,即算法描述的每一步都可通过已实现的基本运算执行有限次来完成。行有限次来完成。10.1 算算 法法第10章
7、_数据结构与算法ppt课件(全)算法(算法(Algorithm):): 是指解题方案的准确而完整的描述。是指解题方案的准确而完整的描述。算法的基本特征:算法的基本特征: (4)输入()输入(Input),), 是指在执行算法时需要从外界取是指在执行算法时需要从外界取得必要的信息。得必要的信息。 (5)输出()输出(Output),算法的目的是为了求解,),算法的目的是为了求解,“解解”就是输出。一个算法可以有一个或多个输出。就是输出。一个算法可以有一个或多个输出。 (4)拥有足够的情报。算法中各种运算总是要施加到各)拥有足够的情报。算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能
8、具有某种初始状态,个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。这就是算法执行的起点或依据。10.1 算算 法法考点考点1 算法的基本概念算法的基本概念第10章_数据结构与算法ppt课件(全)算法的基本要素:算法的基本要素: 一个算法有一个算法有两个基本要素两个基本要素:一个是:一个是对数据对象的运算和对数据对象的运算和操作操作,另一个是,另一个是算法的控制结构算法的控制结构。对数据对象的运算和操作:对数据对象的运算和操作: 算术运算:算术运算:主要包括加、减、乘、除等运算。主要包括加、减、乘、除等运算。 逻辑运算:逻辑运算:主要包括主要包括“逻辑与逻辑与”、
9、“逻辑或逻辑或”、“逻逻辑非辑非”等运算。等运算。 关系运算:关系运算:主要包括主要包括 “大于大于”、“大于或等于大于或等于”、“小于小于”、“小于或等于小于或等于”、“等于等于”、“不等于不等于”等运算。等运算。 数据传输:数据传输:主要包括赋值、输入、输出等操作。主要包括赋值、输入、输出等操作。考点考点1 算法的基本概念算法的基本概念第10章_数据结构与算法ppt课件(全)算法的基本要素:算法的基本要素: 一个算法有一个算法有两个基本要素两个基本要素:一个是:一个是对数据对象的运算和对数据对象的运算和操作操作,另一个是,另一个是算法的控制结构算法的控制结构。算法的控制结构:算法的控制结构
10、: 算法中各种操作之间的执行顺序称为算法中各种操作之间的执行顺序称为算法的控制结构算法的控制结构。 算法的控制结构给出了算法的基本框架。算法的控制结构给出了算法的基本框架。 描述算法的工具通常有:描述算法的工具通常有: 传统流程图、传统流程图、NS结构化流程图、算法描述语言等。结构化流程图、算法描述语言等。 一个算法一般都可以用一个算法一般都可以用顺序结构顺序结构、选择结构选择结构和和循环结构循环结构这三种基本控制结构组合而成。这三种基本控制结构组合而成。考点考点1 算法的基本概念算法的基本概念第10章_数据结构与算法ppt课件(全)算法设计基本方法:算法设计基本方法: (1)列举法)列举法
11、列举法就是根据所要解决的问题,把所有可能的情况都列举法就是根据所要解决的问题,把所有可能的情况都一一列举出来,并用问题中给定的条件来检验哪些是需要的,一一列举出来,并用问题中给定的条件来检验哪些是需要的,哪些是不需要的。哪些是不需要的。 (2)归纳法)归纳法 归纳法的基本思想是通过列举少量的特殊情况,经过分归纳法的基本思想是通过列举少量的特殊情况,经过分析最后找出一般的关系。析最后找出一般的关系。 (3)递推法)递推法 递推法是指从已知的初始条件出发,逐步推出所要求的递推法是指从已知的初始条件出发,逐步推出所要求的结果。结果。考点考点1 算法的基本概念算法的基本概念第10章_数据结构与算法pp
12、t课件(全)算法设计基本方法:算法设计基本方法: (4)递归法)递归法 在解决某些复杂问题时,为了降低问题的复杂程度(如在解决某些复杂问题时,为了降低问题的复杂程度(如问题的规模等),可以将问题逐层分解,最后归结为一些最问题的规模等),可以将问题逐层分解,最后归结为一些最简单的问题。简单的问题。 (5)减半递推法)减半递推法 有些问题的复杂程度与问题本身的规模大小有关。有些问题的复杂程度与问题本身的规模大小有关。 “减半减半” 是指将问题的规模减半,而问题的性质不变;是指将问题的规模减半,而问题的性质不变; “递推递推” 是指重复是指重复“减半减半”的过程。的过程。 减半递推法又称为减半递推法
13、又称为 二分法二分法。考点考点1 算法的基本概念算法的基本概念第10章_数据结构与算法ppt课件(全)考点考点2 算法复杂度算法复杂度算法的复杂度:算法的复杂度: (是一个经常考查的内容,在笔试考试中出现的几率为(是一个经常考查的内容,在笔试考试中出现的几率为70%,此考点为重点识记内容。),此考点为重点识记内容。) (1)算法的时间复杂度)算法的时间复杂度 算法的时间复杂度是指执行算法所需要的计算工作量。算法的时间复杂度是指执行算法所需要的计算工作量。同同一个算法用不同的语言实现,或者用不同的编译程序进行编译,一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,
14、效率均不同。这表明使用绝对的或者在不同的计算机上运行,效率均不同。这表明使用绝对的时间单位衡量算法的效率是不合适的。时间单位衡量算法的效率是不合适的。 算法的时间复杂度可表示为:算法的时间复杂度可表示为: 其中其中 O 表示数量级,表示数量级, n是问题的规模,是问题的规模,f (n) 是算法的工作量。是算法的工作量。O(f(n)T(n) 第10章_数据结构与算法ppt课件(全)算法的复杂度:算法的复杂度: (是一个经常考查的内容,在笔试考试中出现的几率为(是一个经常考查的内容,在笔试考试中出现的几率为70%,此考点为重点识记内容),此考点为重点识记内容) (2)算法的空间复杂度)算法的空间复
15、杂度 算法的空间复杂度是指执行算法所需要的内存空间。算法的空间复杂度是指执行算法所需要的内存空间。 一个算法所占用的存储空间包括算法程序所占用的空间、输一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间以及算法执行过程中所需要入的初始数据所占用的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间单元以及某种数据结构所需要的附加存储空间 (例如,在链(例如,在链式结构中,除了要存储数据本身外,还需要存储链接信息)。式结构中,除了要存储数据本身
16、外,还需要存储链接信息)。在许多实际问题中,为了减少算法所占的存储空间,通常采在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。用压缩存储技术,以便尽量减少不必要的额外空间。考点考点2 算法复杂度算法复杂度第10章_数据结构与算法ppt课件(全)练习练习1:算法的时间复杂度是指算法的时间复杂度是指_。 A) 执行算法程序所需要的时间执行算法程序所需要的时间 B) 算法程序的长度算法程序的长度 C) 算法执行过程中所需要的基本运算次数算法执行过程中所需要的基本运算次数 D) 算法程序中的指令条数算法程序中的指令条数练习练习2:算法的空间复杂度是指算
17、法的空间复杂度是指_。 A) 算法程序的长度算法程序的长度 B) 算法程序中的指令条数算法程序中的指令条数 C) 算法程序所占的存储空间算法程序所占的存储空间 D) 算法执行过程中所需要的存储空间算法执行过程中所需要的存储空间CD考点考点2 算法复杂度算法复杂度第10章_数据结构与算法ppt课件(全)考点考点3 数据结构的定义数据结构的定义 数据结构数据结构 作为计算机的一门学科,主要研究和作为计算机的一门学科,主要研究和讨论以下三个方面:讨论以下三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即)数据集合中各数据元素之间所固有的逻辑关系,即数据的数据的 逻辑结构(逻辑结构(Log
18、ical Structure);); (2)在对数据进行处理时,各数据元素在计算机中的存)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的储关系,即数据的 存储结构(存储结构(Storage Structure);); (3)对各种数据结构进行的)对各种数据结构进行的 运算。运算。 数据(数据(Data)是计算机可以保存和处理的信息。是计算机可以保存和处理的信息。 数据元素(数据元素(Data Element)是数据的基本单位,即数据是数据的基本单位,即数据集合中的个体。有时也把数据元素称作集合中的个体。有时也把数据元素称作结点结点、记录记录等。等。10.2 数据结构的基本概念数据
19、结构的基本概念第10章_数据结构与算法ppt课件(全) 数据处理,数据处理,是指对数据集合中的各元素以各种方式进行是指对数据集合中的各元素以各种方式进行运算,包括运算,包括插入插入、删除删除、查找查找、更改更改等运算,也包括等运算,也包括对数据对数据元素进行分析元素进行分析。 数据结构(数据结构(Data Structure),),是指相互有关联的是指相互有关联的数据元数据元素素的集合。的集合。 例如,向量和矩阵就是数据结构,在这两个数据结构中,例如,向量和矩阵就是数据结构,在这两个数据结构中,数据元素之间有着位置上的关系。数据元素之间有着位置上的关系。 数据元素数据元素的含义非常广泛,现实世
20、界中存在的一切个体的含义非常广泛,现实世界中存在的一切个体都可以是数据元素。都可以是数据元素。 例如,描述一年四季的季节名例如,描述一年四季的季节名“春、夏、秋、冬春、夏、秋、冬”,可,可以作为季节的数据元素;表示家庭成员的名字以作为季节的数据元素;表示家庭成员的名字“父亲、儿子、父亲、儿子、女儿女儿”,可以作为家庭成员的数据元素。,可以作为家庭成员的数据元素。考点考点3 数据结构的定义数据结构的定义第10章_数据结构与算法ppt课件(全) 数据对象:数据对象:是性质相同的数据元素的集合,是数据的一是性质相同的数据元素的集合,是数据的一个子集。个子集。1. 数据的逻辑结构数据的逻辑结构 数据的
21、逻辑结构:数据的逻辑结构:是对数据元素之间的逻辑关系的描述,是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。来表示。 数据的逻辑结构与它们在计算机中的存储位置无关数据的逻辑结构与它们在计算机中的存储位置无关。 数据的逻辑结构有两个要素:数据的逻辑结构有两个要素: 一是数据元素的集合,通常记为一是数据元素的集合,通常记为D; 二是二是D上的关系,它反映了数据元素之间的前后件关系,上的关系,它反映了数据元素之间的前后件关系,通常记为通常记为R。 考点考点3 数据结构的定义数据结构的定义第10章_数据结
22、构与算法ppt课件(全)一个数据结构可以表示成一个数据结构可以表示成 B=(D,R)其中其中 B 表示数据结构。为了反映表示数据结构。为了反映 D 中各数据元素之间的前后中各数据元素之间的前后件关系,一般用二元组来表示。件关系,一般用二元组来表示。 例例 一年四季的数据结构可以表示成一年四季的数据结构可以表示成 B =(D,R) D = 春,夏,秋,冬春,夏,秋,冬 R = (春,夏),(夏,秋),(秋,冬)(春,夏),(夏,秋),(秋,冬) 例例 家庭成员数据结构可以表示成家庭成员数据结构可以表示成 B =(D, R) D = 父亲,儿子,女儿父亲,儿子,女儿 R = (父亲,儿子),(父亲
23、,女儿)(父亲,儿子),(父亲,女儿)考点考点3 数据结构的定义数据结构的定义第10章_数据结构与算法ppt课件(全)2数据的存储结构数据的存储结构 数据的存储结构,数据的存储结构,数据的逻辑结构在计算机存数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称储空间中的存放形式称为数据的存储结构(也称数数据的物理结构据的物理结构)。)。 由于数据元素在计算机存储空间中的位置关系由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前机存储空间中的各数据元素之间的逻辑关
24、系(即前后件关系),在数据的存储结构中,后件关系),在数据的存储结构中,不仅要存放各不仅要存放各数据元素的信息,还需要存放各数据元素之间的前数据元素的信息,还需要存放各数据元素之间的前后件关系的信息后件关系的信息。考点考点3 数据结构的定义数据结构的定义第10章_数据结构与算法ppt课件(全)2数据的存储结构数据的存储结构 一种数据的逻辑结构根据需要可以表示成多种存储结构,一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有,常用的存储结构有,顺序顺序、链接链接 、索引、索引等存储结构。等存储结构。 顺序存储顺序存储,它是把逻辑上相邻的结点存储在物理位置相,它是把逻辑上相邻的结点
25、存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为来体现。由此得到的存储表示称为顺序存储结构顺序存储结构。 链接存储链接存储,它不要求逻辑上相邻的结点在物理位置上亦,它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为得到的存储表示称为链式存储结构链式存储结构。 索引存储索引存储,除建立存储结点信息外,还建立附加的索,除建立存储结点信息外,还建立附加的索引表来标识结点的地址。引表来标识结点
26、的地址。考点考点3 数据结构的定义数据结构的定义第10章_数据结构与算法ppt课件(全)3. 数据结构的图形表示数据结构的图形表示 春冬秋夏父亲女儿儿子 在数据结构的图形表示中,对于数据集合在数据结构的图形表示中,对于数据集合D中的每一个中的每一个数据元素用中间标有元素值的方框表示,称之为数据结点,数据元素用中间标有元素值的方框表示,称之为数据结点,简称简称结点结点。 对于关系对于关系R中的每一个二元组,用一条有向线段从前件中的每一个二元组,用一条有向线段从前件结点指向后件结点。结点指向后件结点。 在数据结构中,没有前件的结点称为在数据结构中,没有前件的结点称为 根结点根结点; 没有后件的结点
27、称为没有后件的结点称为 终端结点终端结点(也称为(也称为 叶子叶子结点)。结点)。考点考点3 数据结构的定义数据结构的定义第10章_数据结构与算法ppt课件(全)考点考点4 线性结构与非线性结构线性结构与非线性结构4. 线性结构与非线性结构线性结构与非线性结构 一个数据结构可以是空的,即一个数据元素都一个数据结构可以是空的,即一个数据元素都没有,称为没有,称为空的数据结构空的数据结构。 一般将数据结构分为两大类:一般将数据结构分为两大类:线性结构线性结构与与非线非线性结构性结构。 线性结构,线性结构,如果一个非空的数据结构满足下面如果一个非空的数据结构满足下面两个条件:两个条件: (1)有且只
28、有一个根结点;()有且只有一个根结点;(2)每个结点最)每个结点最多有一个前件,也最多有一个后件。则称该数据结多有一个前件,也最多有一个后件。则称该数据结构为构为线性结构线性结构。 线性结构又称线性结构又称 线性表线性表。 第10章_数据结构与算法ppt课件(全)4. 线性结构与非线性结构线性结构与非线性结构 如一年四季这个数据结构属于线性结构。如一年四季这个数据结构属于线性结构。 需要说明的是,在一个线性结构中插入或删除需要说明的是,在一个线性结构中插入或删除任何一个结点后还应是线性结构。任何一个结点后还应是线性结构。 非线性结构非线性结构,如果一个数据结构不是线性结构,如果一个数据结构不是
29、线性结构,则称为非线性结构。则称为非线性结构。 如如 家庭成员之间辈分关系的数据结构是非线性家庭成员之间辈分关系的数据结构是非线性结构。结构。考点考点4 线性结构与非线性结构线性结构与非线性结构第10章_数据结构与算法ppt课件(全)考点考点5 线性表的基本概念线性表的基本概念 线性表(线性表(Linear List),),由一组数据元素构成,由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。相对位置是线性的。 线性表是由线性表是由 n(n0) 个数据元素组成的一个有限个数据元素组成的一个有限序列,序列,表中的每一个数
30、据元素,除了第一个外,有表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个且只有一个前件,除了最后一个外,有且只有一个后件。后件。 线性表中数据元素的个数称为线性表中数据元素的个数称为 线性表的长度线性表的长度。 线性表可以为空表。线性表可以为空表。10.3 线性表及其顺序存储结构线性表及其顺序存储结构第10章_数据结构与算法ppt课件(全) 线性表的顺序存储结构,线性表的顺序存储结构,用顺序存储结构来存用顺序存储结构来存储的线性表也称为顺序表。其特点如下:储的线性表也称为顺序表。其特点如下: (1)顺序表中所有元素所占的存储空间是连续)顺序表中所有元素所占的存
31、储空间是连续的;的; (2)顺序表中各数据元素在存储空间中是按逻)顺序表中各数据元素在存储空间中是按逻辑顺序依次存放的。辑顺序依次存放的。 在顺序表中,其前后件两个元素在存储空间中是在顺序表中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。紧邻的,且前件元素一定存储在后件元素的前面。10.3 线性表及其顺序存储结构线性表及其顺序存储结构考点考点5 线性表的基本概念线性表的基本概念第10章_数据结构与算法ppt课件(全)顺序表的插入、删除运算顺序表的插入、删除运算 (1)顺序表的插入运算:)顺序表的插入运算: 在一般情况下,要在第在一般情况下,要在第i(1in)个元素
32、之前插)个元素之前插入一个新元素时,首先要从最后一个(即第入一个新元素时,首先要从最后一个(即第n个)元个)元素开始,直到第素开始,直到第 i 个元素之间共个元素之间共 n-i+1 个元素依次向个元素依次向后移动一个位置,移动结束后,第后移动一个位置,移动结束后,第 i 个位置就被空出,个位置就被空出,然后将新元素插入到第然后将新元素插入到第 i 项。插入结束后,线性表的项。插入结束后,线性表的长度就增加了长度就增加了1。 顺序表的插入运算时需要移动元素,在等概率情顺序表的插入运算时需要移动元素,在等概率情况下,平均需要移动况下,平均需要移动 n/2 个元素。个元素。考点考点5 线性表的基本概
33、念线性表的基本概念第10章_数据结构与算法ppt课件(全)顺序表的插入、删除运算顺序表的插入、删除运算 (2)顺序表的删除运算:)顺序表的删除运算: 在一般情况下,要删除第在一般情况下,要删除第i(1in)个元素时,)个元素时,则要从第则要从第i+1个元素开始,直到第个元素开始,直到第n个元素之间共个元素之间共n-i 个元素依次向前移动一个位置。删除结束后,线性表个元素依次向前移动一个位置。删除结束后,线性表的长度就减小了的长度就减小了1。 进行顺性表的删除运算时也需要移动元素,在等进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动概率情况下,平均需要移动(n-1)/2 个元素
34、。个元素。 顺序表的插入、删除运算效率很低。顺序表的插入、删除运算效率很低。考点考点5 线性表的基本概念线性表的基本概念第10章_数据结构与算法ppt课件(全)1栈的基本概念栈的基本概念 栈(栈(Stack)是一种特殊的线性表,它是限定仅在一端进是一种特殊的线性表,它是限定仅在一端进行插入和删除运算的线性表。行插入和删除运算的线性表。 其中,允许插入与删除的一端称为其中,允许插入与删除的一端称为 栈顶(栈顶(top),),而不允而不允许插入与删除的另一端称为许插入与删除的另一端称为 栈底(栈底(bottom)。)。 栈顶元素总是最后被插入的那个元素,从而也是最先能栈顶元素总是最后被插入的那个元
35、素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。最后才能被删除的元素。 栈是按照栈是按照“先进后出先进后出”(FILO,Fist In Last Out)或)或“后进先出后进先出”(LIFO,Last In Fist Out)的原则操作数据的。)的原则操作数据的。由此可以看出,由此可以看出,栈具有记忆作用栈具有记忆作用。考点考点6 栈和队列栈和队列10.4 栈和队列栈和队列第10章_数据结构与算法ppt课件(全)2栈的顺序存储及基本运算栈的顺序存储及基本运算 栈的顺序存储结构是利用一组地址连续的存储
36、单元依次栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,并设有指针存放自栈底到栈顶的数据元素,并设有指针 top 指向栈顶元素指向栈顶元素的位置。的位置。 用一维数组用一维数组 S(1 m)作为栈的顺序存储空间,其中)作为栈的顺序存储空间,其中m为为最大容量。最大容量。 在栈的顺序存储空间在栈的顺序存储空间S(1 m)中,)中,S(bottom)为栈底)为栈底元素,元素,S(top)为栈顶元素。)为栈顶元素。 top = 0表示栈空;表示栈空;top = m 表示栈满。表示栈满。 栈的基本运算有三种:栈的基本运算有三种:入栈入栈、退栈退栈与与读栈顶元素读栈顶元素。考
37、点考点6 栈和队列栈和队列10.4 栈和队列栈和队列第10章_数据结构与算法ppt课件(全) (1)入栈运算)入栈运算:入栈运算是指在栈顶位置插入一个新元素。:入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即首先将栈顶指针加一(即top加加1),然后将新元素插入到栈顶),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈况称为栈上溢上溢错误。错误。 (2)退栈运算:)退栈运算:退栈是指取出栈顶元素
38、并赋给一个指定退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减一(即指定的变量,然后将栈顶指针减一(即top减减1)。当栈顶指针)。当栈顶指针为为0时,说明栈空,不可进行退栈操作。这种情况称为栈的时,说明栈空,不可进行退栈操作。这种情况称为栈的下溢下溢错误。错误。 (3)读栈顶元素:)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指
39、针不会改变。当栈顶指针为变量,因此栈顶指针不会改变。当栈顶指针为0时,说明栈空,时,说明栈空,读不到栈顶元素。读不到栈顶元素。考点考点6 栈和队列栈和队列第10章_数据结构与算法ppt课件(全)3队列的基本概念队列的基本概念 队列(队列(Queue),),是一种特殊的线性表,它是限是一种特殊的线性表,它是限定仅在表的一端进行插入,而在表的另一端进行删除定仅在表的一端进行插入,而在表的另一端进行删除的线性表。的线性表。 在队列中,允许插入的一端称为在队列中,允许插入的一端称为队尾队尾,允许删除,允许删除的一端称为的一端称为队头队头。 队列是按照队列是按照“先进先出先进先出”(FIFO,Fist
40、In Fist Out)或)或“后进后出后进后出”(LILO,Last In Last Out)的原则操作数据的,因此,队列也被称为的原则操作数据的,因此,队列也被称为“先进先出先进先出”表或表或“后进后出后进后出”表。表。 在队列中,通常用指针在队列中,通常用指针 front 指向队头指向队头,用,用 rear指向队尾指向队尾。考点考点6 栈和队列栈和队列第10章_数据结构与算法ppt课件(全)3队列的基本概念队列的基本概念 队列的基本运算有两种:队列的基本运算有两种:往队列的队尾插入一个往队列的队尾插入一个元素称为元素称为入队运算入队运算,从队列的队头删除一个元素称为,从队列的队头删除一个
41、元素称为出队运算出队运算。 在队列的末尾插入一个元素(在队列的末尾插入一个元素(入队运算入队运算)只涉及)只涉及队尾指针队尾指针 rear 的变化,而要删除队列中的队头元素的变化,而要删除队列中的队头元素(出队运算)出队运算)只涉及队头指针只涉及队头指针front的变化。的变化。 与栈类似,在程序设计语言中,用一维数组作为与栈类似,在程序设计语言中,用一维数组作为队列的顺序存储空间。队列的顺序存储空间。 用顺序存储结构存储的队列称为用顺序存储结构存储的队列称为顺序队列顺序队列。考点考点6 栈和队列栈和队列第10章_数据结构与算法ppt课件(全)4循环队列及其运算循环队列及其运算 循环队列(循环
42、队列(Circular Queue),),为了充分利用存为了充分利用存储空间,在实际应用中,队列的顺序存储结构一般采储空间,在实际应用中,队列的顺序存储结构一般采用循环队列的形式,将顺序存储的队列的最后一个位用循环队列的形式,将顺序存储的队列的最后一个位置指向第一个位置,从而使顺序队列形成逻辑上的环置指向第一个位置,从而使顺序队列形成逻辑上的环状空间,称为状空间,称为循环队列(循环队列(Circular Queue)。)。 在循环队列中,用队尾指针在循环队列中,用队尾指针 rear 指向队列中的指向队列中的队尾元素,用排头指针队尾元素,用排头指针 front 指向排头元素的前一个指向排头元素的
43、前一个位置,因此,从头指针位置,因此,从头指针front指向的后一个位置直到指向的后一个位置直到队尾指针队尾指针rear指向的位置之间,所有的元素均为队列指向的位置之间,所有的元素均为队列中的元素。中的元素。 循环队列中元素的个数循环队列中元素的个数 = rear - front。考点考点6 栈和队列栈和队列第10章_数据结构与算法ppt课件(全)4循环队列及其运算循环队列及其运算 循环队列主要有两种基本运算:循环队列主要有两种基本运算: 入队运算入队运算与与出队运算出队运算。 每进行一次每进行一次出队运算出队运算,队头指针就加,队头指针就加1。当队头。当队头指针指针front=n+1时,则设
44、置时,则设置front=1。 每进行一次每进行一次入队运算入队运算,队尾指针就加,队尾指针就加1。当队尾。当队尾指针指针rear=n+1时,则设置时,则设置rear=1。 队列空与队列满的条件:队列空与队列满的条件: 队列空的条件为队列空的条件为 sign=0; 队列满的条件为队列满的条件为 sign=l,且,且 front=rear。考点考点6 栈和队列栈和队列第10章_数据结构与算法ppt课件(全)1线性链表的基本概念线性链表的基本概念 在链式存储方式中,要求在链式存储方式中,要求每个结点由两部分组成每个结点由两部分组成:一部分用于存放数据元素值,称为一部分用于存放数据元素值,称为数据域数
45、据域,另一部分,另一部分用于存放指针,称为用于存放指针,称为指针域指针域。其中指针用于指向该结。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。点的前一个或后一个结点(即前件或后件)。 链式存储方式既可用于表示线性结构,也可用于链式存储方式既可用于表示线性结构,也可用于表示非线性结构。表示非线性结构。 (1)线性链表)线性链表 线性表的链式存储结构称为线性表的链式存储结构称为线性链表线性链表。考点考点7 线性链表的基本概念线性链表的基本概念10.5 线性链表线性链表第10章_数据结构与算法ppt课件(全) 在线性链表中,一般用一个专门的指针在线性链表中,一般用一个专门的指针 HEA
46、D指向线性链表中第一个数据元素的结点,即指向线性链表中第一个数据元素的结点,即用用HEAD存放线性表中第一个数据元素的存储结点的地址存放线性表中第一个数据元素的存储结点的地址。 在线性表中,最后一个元素没有后件,所以,在线性表中,最后一个元素没有后件,所以,线性链表中最后一个结点的指针域为空(用线性链表中最后一个结点的指针域为空(用 NULL 或或0表示),表示),表示链表终止表示链表终止。考点考点7 线性链表的基本概念线性链表的基本概念10.5 线性链表线性链表第10章_数据结构与算法ppt课件(全)线性链表的存储结构线性链表的存储结构 设有设有4个学生的某门功课的成绩分别是个学生的某门功课
47、的成绩分别是a1,a2,a3,a4,这这 4 个数据在内存中的存储单元地址分别是个数据在内存中的存储单元地址分别是1248、1488、1366 和和 1522,其链表结构如图,其链表结构如图 a 所示。实际上,常用图所示。实际上,常用图 b 来表示它们的逻辑关系。来表示它们的逻辑关系。1248a11488HEAD12481488a213661366a315221522a4NULL考点考点7 线性链表的基本概念线性链表的基本概念 图图 a 线性链表的物理状态线性链表的物理状态 图图 b 线性链表的逻辑状态线性链表的逻辑状态a1HEADa2a3NULLa4第10章_数据结构与算法ppt课件(全)双
48、向链表的存储结构双向链表的存储结构 在一些应用中,对线性链表中的每个结点在一些应用中,对线性链表中的每个结点设置设置两个指针域两个指针域,一个指向其前件结点,称为,一个指向其前件结点,称为前件指针前件指针或或左指针左指针;另一指向其后件结点,称为;另一指向其后件结点,称为后件指针后件指针或或右指针右指针。 这样的线性链表称为这样的线性链表称为双向链表双向链表,其逻辑状态如,其逻辑状态如图所示。图所示。考点考点7 线性链表的基本概念线性链表的基本概念 图图 双向线性链表的物理状态双向线性链表的物理状态 a1HEADa2a3a4NULLNULL第10章_数据结构与算法ppt课件(全) (2)带链的
49、栈)带链的栈 用链式存储结构来存储的栈,称为用链式存储结构来存储的栈,称为带链的栈带链的栈,简称为简称为链栈。链栈。考点考点7 线性链表的基本概念线性链表的基本概念 图图 栈在链式存储时的逻辑状态示意图栈在链式存储时的逻辑状态示意图anHEADan-1NULLa1第10章_数据结构与算法ppt课件(全) (3)带链的队列)带链的队列 用链式存储结构来存储的队列,称为用链式存储结构来存储的队列,称为带链的队带链的队列列,简称为,简称为链队列链队列。考点考点7 线性链表的基本概念线性链表的基本概念 图图 队列在链式存储时的逻辑状态示意图队列在链式存储时的逻辑状态示意图a1a2NULLanrearf
50、ront第10章_数据结构与算法ppt课件(全) 在链式结构中,存储空间位置关系与逻辑关系在链式结构中,存储空间位置关系与逻辑关系是什么?是什么? 在链式存储结构中,存储数据结构的存储空间在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。关系是由指针域来确定的。考点考点7 线性链表的基本概念线性链表的基本概念第10章_数据结构与算法ppt课件(全)考点考点7 线性链表的基本概念线性链表的基本概念2线性链表的