没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
二级共公基础知识教程
第一章数据结构与算法
1.1 算法
算法:是指解题方案的准确而完整的描述。
算法不等于程序,也不等计算机方法,程序的编制不也许优于算法的设计。
算法的基本特性:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,
此顺序将在有限的次数下终止。特性涉及:
(1)可行性;
(2)拟定性,算法中每一环节都必须有明拟定义,不充许有模棱两可的解释,不允许有多
义性;
(3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个环节后终止,涉及合理
的执行时间的含义;
(4)拥有足够的情报。
算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。
指令系统:一个计算机系统能执行的所有指令的集合。
基本运算和操作涉及:算术运算、逻辑运算、关系运算、数据传输。
算法的控制结构:顺序结构、选择结构、循环结构。
算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。
算法复杂度:算法时间复杂度和算法空间复杂度。
算法时间复杂度是指执行算法所需要的计算工作量。
算法空间复杂度是指执行这个算法所需要的内存空间。
1.2 数据结构的基本基本概念
数据结构研究的三个方面:
(1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;
(2)在对数据进行解决时,各数据元素在计算机中的存储关系,即数据的存储结构;
(3)对各种数据结构进行的运算。
数据结构是指互相有关联的数据元素的集合。
数据的逻辑结构包含:
( 1 ) 表达数据元素的信息;
( 2 ) 表达各数据元素之间的前后件关系。
数据的存储结构有顺序、链接、索引等。
线性结构条件:
( 1 ) 有且只有一个根结点;
( 2 ) 每一个结点最多有一个前件,也最多有一个后件。
非线性结构:不满足线性结构条件的数据结构。
1. 3 线性表及其顺序存储结构
线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是
线性的。
在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表
又称为文献。
非空线性表的结构特性:
( 1 ) 且只有一个根结点a l , 它无前件;
( 2 ) 有且只有一个终端结点a n , 它无后件;
( 3 ) 除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结
点个数n 称为线性表的长度,当 n=0时,称为空表。
线性表的顺序存储结构具有以下两个基本特点:
( 1 ) 线性表中所有元素的所占的存储空间是连续的;
( 2 ) 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
ai的存储地址为:ADR(ai)=ADR(al)+(i-l)k,, ADR(al)为第一个元素的地址,k 代表每个元
素占的字节数。
顺序表的运算:插入、删除。 (详 见14--16页)
1. 4 栈和队列
栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与
删除的另一端称为栈底。
栈按照“先进后出“(FILO)或“后进先出"(LIFO)组织数据,栈具有记忆作用。用 top表达
栈顶位置,用 bottom表达栈底。
栈的基本运算:(1)插入元素称为入栈运算;(2 )删除元素称为退栈运算;(3)读栈顶元素
是将栈顶元素赋给一个指定的变量,此时指针无变化。
队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。Rear指
针指向队尾,front指针指向队头。
队列是“先进行出“(FIFO)或“后进后出"(LILO)的线性表。
队列运算涉及(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。
循环队列:s=0表达队列空,s= 1 且 front=rear表达队列满
1. 5 线性链表
数据结构中的每一个结点相应于一个存储单元,这种存储单元称为存储结点,简称结点。
结点由两部分组成:(1)用于存储数据元素值,称为数据域;(2)用于存放指针,称为指针
域,用于指向前一个或后一个结点。
在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元
素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来拟定的。
链式存储方式即可用于表达线性结构,也可用于表达非线性结构。
线性链表,H E A D 称为头指针,H E A D = N U L L (或 0 )称为空表,假如是两指针:左指针(Llink)
指向前件结点,右 指 针 (Rlink)指向后件结点。
线性链表的基本运算:查找、插入、删除。
1. 6 树与二叉树
一、树的基本概念
在树结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有一个,称为树的
根结点,简称为树的根。
在树结构中,每一个结点可以有多个后件,它们都称为该结点的子结点。没有后件的结点称
为叶子结点。
在树结构中,一个结点所拥有的后件个数称为该结点的度。
叶子结点的度为0。
树的最大层次称为树的深度。
在一个算术表达式中,有运算符和运算对象。一个运算符可以有若干个运算对象。例职,取
正 (+ )等只有一个运算对象,称为单目运算符;二个运算对象称为双目运算符,三 目运算
符。
用树来表达算术表达式的原则如下:
表达式中的每一个运算符在树中相应一个结点,称为运算符结点。
运算符的每一个运算对象在树中为该运算符结点的子树(在树中的顺序为从左到右)。
运算对象中的单变量均为叶子结点。
二、二叉树及其基本性质
1、什么是二叉树
二叉树是一种很有用的非线性结构。二就树具有以下两个特点:
非空二叉树只有一个根结点;
每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树。
由以上特点可以看出,在二叉树中,每一个结点的度最大为2 , 即所有子树(左子树或右子
树)也均为二叉树,而树结构中的每一个结点的度可以是任意的。此外,二叉树中的每一个
结点的子树被明显地分为左子树与右子树。可以没有其中的一个,也可以全没有。
二叉树的基本性质
性 质 1:在二叉树的第K 层上,最 多 有 (K * )个结点。
性质2:浓度为M 的二叉树最多有2 m - l个结点。
深度为m 的二叉树是指二叉树共有m 层。
性质3:在任意一棵二叉树中度为0 的 结 点 (即叶子结点)总是比度为2 的结点多一个。
性质4:具有n 个结点的二叉树,其深度至少为[log2nj+l,其中[log2n]表达取的整数部分。
满二叉树与完全二叉树
满二叉树与完全二叉树是两种特殊形态的二叉树。
满二叉树
所谓满二叉树是指这样的一种二叉树;除最后一层外,每一层上的所有结点都有两个子结点。
这就是说,在满二叉树中,每一层上的结点数都达成最大值,即在满二叉树的第K 层上有
2K -1个结点,且深度为m 的满二叉树有2 m -l个结点。
完全二叉树
所谓完全二叉树是指这样的二叉树,除最后一层外,每一层上的结点数均达的最大值;在最
后一层上只缺少右边的若干结点。
列确切地说,假如从根结点起,对二叉树的结点自上而下、自左至右用自然数进行边疆编号,
则深度为m、且有 n 个结点的二叉树,当且仅当其每一个结点都与深度为m 的满二叉树中
编号从1 到 n 的结点一一相应时,称之为完全二叉树。
对于完全二叉树来说,叶子结点只也许在层次最大的两层上出现;对于任何一个结点,若其
右分支下的子孙结点的最大层次为P,则其左分支下的子孙结点的最大层次或为P,或为P+1。
由满二叉树与完全二叉树的特点可以看出,满二叉树也是完全二叉树,而完全二叉树一般不
是满二叉树。
完全二叉树还具有以下两个性质:
性质5:具有n 个结点的完全二叉树的深度为[log2n]+l。
性质6:设完全二叉树共有n 个结点。假如从根结点开始,按层序(每一层从左到右)用自
然 数 1, 2 , …,n 给结点进行编号,则对于编号为k (k = l,2 ,...n )的结点有以下结论:
若 k = l , 则该结点为根结点,它没有父结点;若 k > l , 则该结点的父结点编号为INT(k/2)。
若 2kW n,则编号为k 的结点的左子结点编号为2k ;否则该结点无左子结点(显然也没有
右子结点)。
若 2 k + Y n ,则编号为k 的结点的右子结点编号为2k+l;否则该结点无右子结点.
三、二叉树的存储结构
二叉树的遍历
二叉树的遍历是指不反复地访问二叉树的所有结点。
剩余65页未读,继续阅读
资源评论
无敌开心
- 粉丝: 1936
- 资源: 10万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功