计算机基础与C语言程序设计第12章_数据结构与算法_第1页
计算机基础与C语言程序设计第12章_数据结构与算法_第2页
计算机基础与C语言程序设计第12章_数据结构与算法_第3页
计算机基础与C语言程序设计第12章_数据结构与算法_第4页
计算机基础与C语言程序设计第12章_数据结构与算法_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构与算法 公共基础知识考试大纲 一、数据结构与算法 二、程序设计基础 三、软件工程基础 四、数据库设计基础 包含四部分内容: 公共基础知识考试大纲 1. 掌握算法的基本概念。 2. 掌握基本数据结构及其操作。 3. 掌握基本排序和查找算法。 4. 掌握逐步求精的结构化程序设计方法。 5. 掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6. 掌握数据库的基本知识,了解关系数据库的设计。 基本要求: 公共基础知识考试大纲 1. 算法的基本概念;算法复杂度的概念和意义。 2. 数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3. 线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4. 栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 数据结构与算法考试内容: 公共基础知识考试大纲 5. 线性单链表、双向链表与循环链表的结构及其基本运算。 6. 树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。 7. 顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 数据结构与算法考试内容: 一、数据结构与算法 用计算机解决实际问题,需要编写程序。 一个程序应 包括两个方面 : 数据结构( ,对数据的描述,即在程序中要指定 数据的类型 和 数据的组织形式 ; 算法( 是对操作的描述,即操作步骤。 这就是著名计算机科学家沃思( 出的一个公式: 程序 = 数据结构 + 算法 一、数据结构与算法 考点 1 算法的基本概念 算法( 是指解题方案的准确而完整的描述。 算法的基本特征: ( 1)有穷性( 一个算法应包含有限的操作步骤而不能是无限的。 ( 2)确定性( 算法中的每一个步骤都应该是确定的,而不应当是含糊的、模棱两可的。 ( 3)可行性( 一个算法应该可以有效地执行,即算法描述的每一步都可通过已实现的基本运算执行有限次来完成。 法 算法( 是指解题方案的准确而完整的描述。 算法的基本特征: ( 4)输入( 是指在执行算法时需要从外界取得必要的信息。 ( 5)输出( 算法的目的是为了求解,“解”就是输出。一个算法可以有一个或多个输出。 ( 4)拥有足够的情报。算法中各种运算总是要施加到各个运算对象上,而这些运算对象又可能具有某种初始状态,这就是算法执行的起点或依据。 法 考点 1 算法的基本概念 算法的基本要素: 一个算法有 两个基本要素 :一个是 对数据对象的运算和操作 ,另一个是 算法的控制结构 。 对数据对象的运算和操作: 算术运算: 主要包括加、减、乘、除等运算。 逻辑运算: 主要包括“逻辑与”、“逻辑或”、“逻辑非”等运算。 关系运算: 主要包括 “大于”、“大于或等于”、“小于”、“小于或等于”、“等于”、“不等于”等运算。 数据传输: 主要包括赋值、输入、输出等操作。 考点 1 算法的基本概念 算法的基本要素: 一个算法有 两个基本要素 :一个是 对数据对象的运算和操作 ,另一个是 算法的控制结构 。 算法的控制结构: 算法中各种操作之间的执行顺序称为 算法的控制结构 。 算法的控制结构给出了算法的基本框架。 描述算法的工具通常有: 传统流程图、 N 法描述语言等。 一个算法一般都可以用 顺序结构 、 选择结构 和 循环结构这三种基本控制结构组合而成。 考点 1 算法的基本概念 算法设计基本方法: ( 1)列举法 列举法就是根据所要解决的问题,把所有可能的情况都一一列举出来,并用问题中给定的条件来检验哪些是需要的,哪些是不需要的。 ( 2)归纳法 归纳法的基本思想是通过列举少量的特殊情况,经过分析最后找出一般的关系。 ( 3)递推法 递推法是指从已知的初始条件出发,逐步推出所要求的结果。 考点 1 算法的基本概念 算法设计基本方法: ( 4)递归法 在解决某些复杂问题时,为了降低问题的复杂程度(如问题的规模等),可以将问题逐层分解,最后归结为一些最简单的问题。 ( 5)减半递推法 有些问题的复杂程度与问题本身的规模大小有关。 “减半” 是指将问题的规模减半,而问题的性质不变; “递推” 是指重复“减半”的过程。 减半递推法又称为 二分法 。 考点 1 算法的基本概念 考点 2 算法复杂度 算法的复杂度: (是一个经常考查的内容,在笔试考试中出现的几率为70%,此考点为重点识记内容。) ( 1)算法的时间复杂度 算法的时间复杂度是指执行算法所需要的计算工作量。 同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。这表明使用绝对的时间单位衡量算法的效率是不合适的。 算法的时间复杂度可表示为: 其中 O 表示数量级, f (n) 是算法的工作量。 O ( f ( n ) )T( n ) 算法的复杂度: (是一个经常考查的内容,在笔试考试中出现的几率为70%,此考点为重点识记内容) ( 2)算法的空间复杂度 算法的空间复杂度是指执行算法所需要的内存空间。 一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占用的存储空间以及算法执行过程中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间 (例如,在链式结构中,除了要存储数据本身外,还需要存储链接信息)。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。 考点 2 算法复杂度 练习 1: 算法的时间复杂度是指 _。 A) 执行算法程序所需要的时间 B) 算法程序的长度 C) 算法执行过程中所需要的基本运算次数 D) 算法程序中的指令条数 练习 2: 算法的空间复杂度是指 _。 A) 算法程序的长度 B) 算法程序中的指令条数 C) 算法程序所占的存储空间 D) 算法执行过程中所需要的存储空间 C D 考点 2 算法复杂度 考点 3 数据结构的定义 数据结构 作为计算机的一门学科,主要研究和讨论以下三个方面: ( 1)数据集合中各数据元素之间所固有的逻辑关系,即数据的 逻辑结构( ( 2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的 存储结构( ( 3)对各种数据结构进行的 运算。 数据( 是计算机可以保存和处理的信息。 数据元素( 是数据的基本单位,即数据集合中的个体。有时也把数据元素称作 结点 、 记录 等。 据结构的基本概念 数据处理, 是指对数据集合中的各元素以各种方式进行运算,包括 插入 、 删除 、 查找 、 更改 等运算,也包括 对数据元素进行分析 。 数据结构( 是指相互有关联的 数据元素 的集合。 例如,向量和矩阵就是数据结构,在这两个数据结构中,数据元素之间有着位置上的关系。 数据元素 的含义非常广泛,现实世界中存在的一切个体都可以是数据元素。 例如,描述一年四季的季节名“春、夏、秋、冬”,可以作为季节的数据元素;表示家庭成员的名字“父亲、儿子、女儿”,可以作为家庭成员的数据元素。 考点 3 数据结构的定义 数据对象: 是性质相同的数据元素的集合,是数据的一个子集。 1. 数据的逻辑结构 数据的逻辑结构: 是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。 数据的逻辑结构与它们在计算机中的存储位置无关 。 数据的逻辑结构有两个要素: 一是数据元素的集合,通常记为 D; 二是 反映了数据元素之间的前后件关系,通常记为 R。 考点 3 数据结构的定义 一个数据结构可以表示成 B=( D, R) 其中 B 表示数据结构。为了反映 D 中各数据元素之间的前后件关系,一般用二元组来表示。 例 一年四季的数据结构可以表示成 B =( D, R) D = 春,夏,秋,冬 R = (春,夏),(夏,秋),(秋,冬) 例 家庭成员数据结构可以表示成 B =( D, R) D = 父亲,儿子,女儿 R = (父亲,儿子),(父亲,女儿) 考点 3 数据结构的定义 2数据的存储结构 数据的存储结构, 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称 数据的物理结构 )。 由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中, 不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息 。 考点 3 数据结构的定义 2数据的存储结构 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有, 顺序 、 链接 、索引 等存储结构。 顺序存储 ,它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储表示称为 顺序存储结构 。 链接存储 ,它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为 链式存储结构 。 索引存储 ,除建立存储结点信息外,还建立附加的索引表来标识结点的地址。 考点 3 数据结构的定义 3. 数据结构的图形表示 春 冬秋夏父亲女儿儿子在数据结构的图形表示中,对于数据集合 之为数据结点,简称 结点 。 对于关系 一条有向线段从前件结点指向后件结点。 在数据结构中,没有前件的结点称为 根结点 ; 没有后件的结点称为 终端结点 (也称为 叶子 结点)。 考点 3 数据结构的定义 考点 4 线性结构与非线性结构 4. 线性结构与非线性结构 一个数据结构可以是空的,即一个数据元素都没有,称为 空的数据结构 。 一般将数据结构分为两大类: 线性结构 与 非线性结构 。 线性结构, 如果一个非空的数据结构满足下面两个条件: ( 1)有且只有一个根结点;( 2)每个结点最多有一个前件,也最多有一个后件。则称该数据结构为 线性结构 。 线性结构又称 线性表 。 4. 线性结构与非线性结构 如一年四季这个数据结构属于线性结构。 需要说明的是,在一个线性结构中插入或删除任何一个结点后还应是线性结构。 非线性结构 ,如果一个数据结构不是线性结构,则称为非线性结构。 如 家庭成员之间辈分关系的数据结构是非线性结构。 考点 4 线性结构与非线性结构 考点 5 线性表的基本概念 线性表( 由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 线性表是由 n(n0) 个数据元素组成的一个有限序列, 表中的每一个数据元素,除了第一个外,有且只有一个前件,除了最后一个外,有且只有一个后件。 线性表中数据元素的个数称为 线性表的长度 。 线性表可以为空表。 线性表及其顺序存储结构 线性表的顺序存储结构, 用顺序存储结构来存储的线性表也称为顺序表。其特点如下: ( 1)顺序表中所有元素所占的存储空间是连续的; ( 2)顺序表中各数据元素在存储空间中是按逻辑顺序依次存放的。 在顺序表中,其前后件两个元素在存储空间中是紧邻的,且前件元素一定存储在后件元素的前面。 线性表及其顺序存储结构 考点 5 线性表的基本概念 顺序表的插入、删除运算 ( 1)顺序表的插入运算: 在一般情况下,要在第 i( 1in)个元素之前插入一个新元素时,首先要从最后一个(即第 素开始,直到第 i 个元素之间共 个元素依次向后移动一个位置,移动结束后,第 i 个位置就被空出,然后将新元素插入到第 i 项。插入结束后,线性表的长度就增加了 1。 顺序表的插入运算时需要移动元素,在等概率情况下,平均需要移动 n/2 个元素。 考点 5 线性表的基本概念 顺序表的插入、删除运算 ( 2)顺序表的删除运算: 在一般情况下,要删除第 i( 1in)个元素时,则要从第 i+1个元素开始,直到第 元素依次向前移动一个位置。删除结束后,线性表的长度就减小了 1。 进行顺性表的删除运算时也需要移动元素,在等概率情况下,平均需要移动 ( 。 顺序表的插入、删除运算效率很低。 考点 5 线性表的基本概念 1栈的基本概念 栈( 是一种特殊的线性表,它是限定仅在一端进行插入和删除运算的线性表。 其中,允许插入与删除的一端称为 栈顶( 而不允许插入与删除的另一端称为 栈底( 栈顶元素总是最后被插入的那个元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。 栈是按照“ 先进后出”( n “ 后进先出”( n 原则操作数据的。由此可以看出, 栈具有记忆作用 。 考点 6 栈和队列 栈和队列 2栈的顺序存储及基本运算 栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,并设有指针 向栈顶元素的位置。 用一维数组 S( 1 m)作为栈的顺序存储空间,其中 在栈的顺序存储空间 S( 1 m)中, S( 栈底元素, S( 栈顶元素。 0表示栈空; m 表示栈满。 栈的基本运算有三种: 入栈 、 退栈 与 读栈顶元素 。 考点 6 栈和队列 栈和队列 ( 1)入栈运算 :入栈运算是指在栈顶位置插入一个新元素。首先将栈顶指针加一(即 ),然后将新元素插入到栈顶指针指向的位置。当栈顶指针已经指向存储空间的最后一个位置时,说明栈空间已满,不可能再进行入栈操作。这种情况称为栈 上溢 错误。 ( 2)退栈运算: 退栈是指取出栈顶元素并赋给一个指定的变量。首先将栈顶元素(栈顶指针指向的元素)赋给一个指定的变量,然后将栈顶指针减一(即 )。当栈顶指针为 0时,说明栈空,不可进行退栈操作。这种情况称为栈的 下溢 错误。 ( 3)读栈顶元素: 读栈顶元素是指将栈顶元素赋给一个指定的变量。这个运算不删除栈顶元素,只是将它赋给一个变量,因此栈顶指针不会改变。当栈顶指针为 0时,说明栈空,读不到栈顶元素。 考点 6 栈和队列 3队列的基本概念 队列( 是一种特殊的线性表,它是限定仅在表的一端进行插入,而在表的另一端进行删除的线性表。 在队列中,允许插入的一端称为 队尾 ,允许删除的一端称为 队头 。 队列是按照 “先进先出”( n “ 后进后出”( n 原则操作数据的,因此,队列也被称为“先进先出”表或“后进后出”表。 在队列中,通常用指针 向队头 ,用 考点 6 栈和队列 3队列的基本概念 队列的基本运算有两种: 往队列的队尾插入一个元素称为 入队运算 ,从队列的队头删除一个元素称为出队运算 。 在队列的末尾插入一个元素( 入队运算 )只涉及队尾指针 变化,而要删除队列中的队头元素( 出队运算) 只涉及队头指针 与栈类似,在程序设计语言中,用一维数组作为队列的顺序存储空间。 用顺序存储结构存储的队列称为 顺序队列 。 考点 6 栈和队列 4循环队列及其运算 循环队列( 为了充分利用存储空间,在实际应用中,队列的顺序存储结构一般采用循环队列的形式,将顺序存储的队列的最后一个位置指向第一个位置,从而使顺序队列形成逻辑上的环状空间,称为 循环队列( 在循环队列中,用队尾指针 向队列中的队尾元素,用排头指针 向排头元素的前一个位置,因此,从头指针 有的元素均为队列中的元素。 循环队列中元素的个数 = 考点 6 栈和队列 4循环队列及其运算 循环队列主要有两种基本运算: 入队运算 与 出队运算 。 每进行一次 出队运算 ,队头指针就加 1。当队头指针 n+1时,则设置 。 每进行一次 入队运算 ,队尾指针就加 1。当队尾指针 n+1时,则设置 。 队列空与队列满的条件: 队列空的条件为 ; 队列满的条件为 l,且 考点 6 栈和队列 1 线性链表的基本概念 在链式存储方式中,要求 每个结点由两部分组成 :一部分用于存放数据元素值,称为 数据域 ,另一部分用于存放指针,称为 指针域 。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。 链式存储方式既可用于表示线性结构,也可用于表示非线性结构。 ( 1)线性链表 线性表的链式存储结构称为 线性链表 。 考点 7 线性链表的基本概念 线性链表 在线性链表中,一般用一个专门的指针 用 在线性表中,最后一个元素没有后件,所以,线性链表中最后一个结点的指针域为空(用 0表示), 表示链表终止 。 考点 7 线性链表的基本概念 线性链表 线性链表的存储结构 设有 4个学生的某门功课的成绩分别是 4 个数据在内存中的存储单元地址分别是 1248、 1488、1366 和 1522,其链表结构如图 a 所示。实际上,常用图 b 来表示它们的逻辑关系。 1248a 1148813661366a 315221522a 4 线性链表的基本概念 图 a 线性链表的物理状态 图 b 线性链表的逻辑状态 a 1a 2 a 3 双向链表 的存储结构 在一些应用中,对线性链表中的每个结点 设置两个指针域 ,一个指向其前件结点,称为 前件指针或 左指针 ;另一指向其后件结点,称为 后件指针 或右指针 。 这样的线性链表称为 双向链表 ,其逻辑状态如图所示。 考点 7 线性链表的基本概念 图 双向线性链表的物理状态 ( 2) 带链的栈 用链式存储结构来存储的栈,称为 带链的栈 ,简称为 链栈。 考点 7 线性链表的基本概念 图 栈在链式存储时的逻辑状态示意图 a a ( 3) 带链的队列 用链式存储结构来存储的队列,称为 带链的队列 ,简称为 链队列 。 考点 7 线性链表的基本概念 图 队列在链式存储时的逻辑状态示意图 在链式结构中,存储空间位置关系与逻辑关系是什么? 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 考点 7 线性链表的基本概念 考点 7 线性链表的基本概念 2 线性链表的基本运算 ( 1)在线性链表中包含指定元素的结点之前 插入一个新元素 。 在线性链表中插入元素时,不需要移动数据元素,只需要修改相关结点指针即可,也不会出现“上溢”现象。 例 假设线性链表如图( a)所示。现在要在线性链表中包含元素 a 的结点之前插入一个包含新元素 插入过程如下: 考点 7 线性链表的基本概念 a a a)原来的线性链表 ( b)申请一个由 ( d)将新结点插入到指定结点之前 ( c)在线性链表中找到由 a 线性链表的基本概念 2 线性链表的基本运算 ( 2)在线性链表中删除包含指定元素的结点。 在线性链表中删除元素时,也不需要移动数据元素,只需要修改相关结点指针即可。 ( 3)将两个线性链表按要求合并成一个线性链表。 ( 4)将一个线性链表按要求进行分解。 ( 5)逆转线性链表。 ( 6)复制线性链表。 考点 7 线性链表的基本概念 2 线性链表的基本运算 ( 7)线性链表的排序。 ( 8)线性链表的查找。 注:线性链表不能随机存取。 在链表中,即使知道被访问结点的序号 i,也不能像顺序表中那样直接按序号 i 访问结点,而只能从链表的头指针出发,顺着链域逐个结点往下搜索,直至搜索到第 i 个结点为止。 因此, 链表不是随机存储结构 。 考点 7 线性链表的基本概念 3循环链表 循环链表( 结构具有下面两个特点: ( 1)在循环链表中 增加了一个表头结点 。表头结点的数据域为任意或者根据需要来设置,指针域指向线性表的第一个元素的结点。 循环链表的头指针指向表头结点 。 ( 2)循环链表中 最后一个结点的指针域不是空的,而是指向表头结点 。即在循环链表中,所有结点的指针构成了一个环状链 考点 7 线性链表的基本概念 3循环链表 下图为循环链表的逻辑状态示意图,图( a)是一个非空的循环链表,图( b)是一个空的循环链表。 a a 1表头结点( a)非空循环链表 ( b)空循环链表 树与二叉树及其基本性质 1 树的基本概念 树 ( 是一种简单的非线性结构。 在树结构中,每一个结点只有一个前件,称为 父结点 ,没有前件的结点只有一个,称为树的 根结点 。 每一个结点可以有多个后件,它们称为该结点的 子结点 。没有后件的结点称为 叶子结点 。 一个结点所拥有的后件个数称为该 结点的度 。 叶子结点的度为 0。 在树中,所有结点中的最大的度称为树的度 。树的最大层次称为 树的深度。 树与二叉树 在笔试考试中,一般是一个必考的内容,出现的几率为100%,此考点为重点掌握内容。重点识记树及二叉树的性质。 考点 8 树与二叉树及其基本性质 根结点 : 父结点 : 除根结点外,每个结点只有一个前件,称为该结点的父结点。 叶子结点 : 节点的度数: 根结点 ; ; ; ;叶子结点的度为 0。 树的度: G H I 树的结构图 A E、 F、 G、 H、 I、 J 3。 3。 树的深度: 考点 8 树与二叉树及其基本性质 2 二叉树及其基本运算 二叉树( 是一种非常有用的非线性数据结构。 二叉树与前面介绍的树结构不同,但它与树结构很相似,并且,有关树结构的所有术语都可以用到二叉树上。 二叉树的特点: 非空二叉树只有一个根结点; 每个结点最多有两棵子树,且分别称为该结点的 左子树 与 右子树 。 考点 8 树与二叉树及其基本性质 在二叉树中,每个结点的度最大为 2,而树结构中的每一个结点的度可以是任意的。另外,二叉树中的每一个结点的子树要区分为左子树与右子树。 例如,下图中所示的是 4 颗不同的二叉树。 树与二叉树及其基本性质 满二叉树与完全二叉树: ( 1)满二叉树 在一颗二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子结点都在同一层上,这样的二叉树称为满二叉树。下图分别是深度为 2、 3的满二叉树。 树与二叉树及其基本性质 满二叉树与完全二叉树: ( 2) 完全二叉树 完全二叉树是指除最后一层外,每一层上的结点数均达到最大值,而在最后一层上只缺少右边的若干结点。 下图是两颗深度为 3的完全二叉树。 考点 8 树与二叉树及其基本性质 二叉树的基本性质: 性质 1 在二叉树中,第 i1)。 性质 2 在深度为 点总数最多为 2k1)。 性质 3 对任意一棵二叉树,度为 0的结点(即叶子结点)总是比度为 2的结点多一个。 性质 4 ( 1)具有 深度至少为1,其中 示取 ( 2)具有 1。 考点 8 树与二叉树及其基本性质 二叉树的基本性质: 性质 5 如果对一棵有 到 一层从左到右)编号,则 对任一结点 i(1in),有 ( 1)如果 i=1,则结点 没有父结点;如果 i1,则其父结点编号为 i/2。 ( 2)如果 2in,则结点 点 否则,其左子结点是结点 2i。 ( 3)如果 2i+1n,则结点 则,其右子结点是结点 2i+1。 根据完全二叉树的这个性质,如果按从上到下、从左到右顺序存储完全二叉树的各结点,则很容易确定每一个结点的父结点、左子结点和右子结点的位置。 考点 8 树与二叉树及其基本性质 3 二叉树的存储结构 在计算机中, 二叉树通常采用链式存储结构 。 与线性链表类似,用于存储二叉树中各元素的存储结点也 由两部分组成 : 数据域 和 指针域 。 但在二叉树中,由于每一个元素可以有两个后件(即两个子结点),因此,用于存储二叉树的存储结点的指针域有两个: 一个用于指向该结点的左子结点的存储地址,称为 左指针域 ;另一个用于指向该结点的右子结点的存储地址,称为 右指针域 。 考点 8 树与二叉树及其基本性质 3 二叉树的存储结构 下图是二叉树存储结点的示意图。其中: L(i)是结点 即 L(i)为结点 R(i)是结点 即 R(i)为结点 V(i)是数据域 。 L(i) V(i) R(i) 树与二叉树及其基本性质 3 二叉树的存储结构 二叉树的链式存储结构也称为二叉链表。下图表示二叉链表的存储示意图。 0 0 0 E 0头指针对于满二叉树与完全二叉树来说,可按层序进行顺序存储。 这样,不仅节省存储空间,又方便确定每个结点的父结点与左右子结点的位置,但顺序存储结构对于一般的二叉树不适用。 考点 8 树与二叉树及其基本性质 4 二叉树的遍历 二叉树的遍历是指不重复地访问二叉树中的所有结点。 在遍历二叉树的过程中,通常规定: 先遍历左子树,然后再遍历右子树 。 在先左后右的原则下,根据 访问根结点的次序,二叉树的遍历可以分为三种: 前序遍历 、 中序遍历 、 后序遍历 。 用 D、 L、 “ 访问根结点 ”、“ 遍历根结点的左子树 ” 和 “ 遍历根结点的右子树 ”。 考点 8 树与二叉树及其基本性质 4 二叉树的遍历 ( 1)前序遍历( 若二叉树为空,则结束返回。否则:首先访问根结点,然后遍历左子树,最后遍历右子树;并且,在遍历左右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。 H 则遍历的结果为: 考点 8 树与二叉树及其基本性质 4 二叉树的遍历 ( 2)中序遍历( 若二叉树为空,则结束返回。否则:首先遍历左子树,然后访问根结点,最后遍历右子树;并且,在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。 H 则遍历的结果为: 考点 8 树与二叉树及其基本性质 4 二叉树的遍历 ( 3)后序遍历( 若二叉树为空,则结束返回。否则:首先遍历左子树,然后遍历右子树,最后访问根结点,并且,在遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。 H 则遍历的结果为: 考点 9 顺序查找 1 顺序查找 顺序查找 又称为 顺序搜索 ,基本方法是: 从线性表的第一个元素开始,依次与被查找元素进行比较,若相等则查找成功;若所有的元素都与被查元素进行了比较,都不相等,则查找失败。 在下列两种情况下也只能采用顺序查找: ( 1)如果线性表为无序表,则不管是顺序存储结构还是链式存储结构,只能用顺序查找。 ( 2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。 顺序查找一个 平均复杂度为 O( n)。 查找技术 考点 10 二分法查找 2 二分法查找 二分法 只适用于顺序存储的,按非递减排列的有序表,其方法如下: 设有序线性表的长度为 n,被查找的元素为 i, ( 1)将 i 与线性表的中间项进行比较; ( 2)若 i 与中间项的值相等,则查找成功; ( 3)若 i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论