等级考基础-数据结构.ppt
《等级考基础-数据结构.ppt》由会员分享,可在线阅读,更多相关《等级考基础-数据结构.ppt(83页珍藏版)》请在三一办公上搜索。
1、等级考基础数据结构与算法,东华大学计算机学院 孙 莉2016年2月,1 数据结构基本概念,1.1数据结构的研究内容:非数值数据之间的结构关系,及如何表示,如何存储,如何处理。归纳为三部分:逻辑结构、存储结构和运算集合。,存储结构的二种类型:顺序存储结构通过在存储器中的相对位置,表示数据的逻辑结构。非顺序存储结构(链式存储结构)-由指针表示数据间的逻辑关系。,1.2常用的数据结构,(1)线性结构:结构中的数据元素之间存在着一对一的线性关系。线性表、栈、队(2)树形结构:结构中的数据元素之间存在着一对多的层次关系。-非线性结构(3)图状结构或网状结构:结构中的数据元素之间存在着多对多的任意关系。-
2、非线性结构,算法的概念 算法是对特定问题求解步骤的一种描述,算法的基本特征:1)可行性:组成算法的操作必须能够在计算机上实现。2)确定性:算法的每一步操作必须清晰无二义性。3)有穷性:算法必须在有限步内结束;4)有足够的情报:0个或多个输入;1个或多个输出;算法描述的方法很多,如自然语言、框图、类C等,例:求两个正整数 m,n 中的最大数MAX的算法(1)若 m n 则 max=m(2)若 m=n 则 max=n,1、正确性:(1)没有语法错误;(2)对于几组输入数据能够得出满足要求的结果;(3)对于精心选择的典型而苛刻的几组输入数据能够得到满足要求的结果。(4)对于一切合法的输入数据都能产生
3、满足要求的结果。2、可读性:便于阅读、理解、调试、修改;3、健壮性:对不合法的输入能作出正确的反映与处理;4、高效性:执行时间短(时间复杂度)、需求存储空间省(空间复杂度),1.4评价算法标准,时间复杂度T(n)以求解问题的基本操作的执行次数作为算法时间的度量。,14 算法与算法分析,O(n3)称为矩阵相乘算法时间复杂度;O(n3)表示矩阵相乘算法执行时间与n3成正比,即O(n3)与n3 同一数量级;,例 n 阶矩 阵相乘的算法,For(i=1;i=n;i+)For(j=1;j=n;j+)c i j=0;For(k=1;k=n;k+)c i j+=a i k*b k j,矩阵相乘的基本运算:乘
4、法 加法;,14 算法与算法分析,例计算 解法1 先计算x 的幂,存于power 中,再分别乘以相应的系数#define N 100 float evaluate(float coef,float x,int n)float powerN,f;int i;for(power 0=1,i=1;i=n;i+)poweri=x*poweri-1;for(f=0,i=0;i=N;i+)f=f+coefi*poweri;return(f);,问题规模为n,算法时间复杂度:O(n)空间复杂度:O(N),2 线性表,线性表是最简单、最常用的数据结构。栈、队列是特殊的线性表-线性结构,线性表是n 个数据元素的
5、有限序列,通常记作(a1,a2,a3,an)。,2.1 线性表的概念,例、英文字母表(A,B,C,D,E Z)。某单位的电话号码簿。,线性表的逻辑结构,2.1 线性表的概念,设 A=(a1,a2,.,ai-1,ai,ai+1,an)是一线性表,1)同一线性表中的元素必须是同一类型的;2)在表中 ai-1 领先于ai,ai 领先于ai+1,称ai-1 是ai 的前件,ai+1 是ai 的后件;3)在线性表中,除第一个元素和最后一个元素之外,其他元素都有且仅有一个前件,有且仅有一个后件;4)线性表中元素的个数n 称为线性表的长度,n=0 时称为空表;,用一组连续的内存单元依次存放线性表的数据元素。
6、,用顺序存储结构存储的线性表称为顺序表,2.2 线性表的顺序存储和实现,线性表(a1,a2,a3,.an)的顺序存储结构,2.2 线性表的顺序存储和实现,设线性表中每个数据元素占 t 个存储单元,在顺序存储结构中,线性表的第i个元素的存储位置与第1个元素的存储位置的关系是:Loc(ai)=Loc(a1)+(i 1)t其中Loc(a1)基地址,随机存取顺序存储结构、随机存取结构,2.2 线性表的顺序存储和实现,插入位置 移动元素个数 1 n 2 n-1 i n-i+1 n 1 n+1 0,插入算法时间复杂度分析 算法时间复杂度取决于移动元素的个数,移动元素的个数不仅与表长有关,而且与插入位置有关
7、。,2.2 线性表的顺序存储和实现,由此可见在顺序表中插入一个元素,平均要移动表的一半元素。表长为n的顺序表,插入算法的时间复杂度为 O(n),假设在线性表的任何位置插入元素的概率相同,即 pi=1/(n+1),设pi为在第i个元素之前插入元素的概率,在长度为n的顺序表中插入一个元素,所需移动元素个数数学期望值为:,删除算法时间复杂度分析,假设在线性表的任何位置删除元素的概率相同,即 pi=1/n删除所需移动元素个数的数学期望值:,2.3 线性表的链式存储和实现,线性表的链式存储结构是用一组任意的存储单元存储线性表的各个数据元素。为了表示线性表中元素的先后关系,每个元素除需要存储自身的信息外,
8、还要保存直接前趋元素或直接后继元素的存储位置。,线性链表的概念1 线性链表,2.3.1 线性链表,用链表存储线性表时,数据元素之间的关系是通过保存直接后继元素的存储位置来表示的,结点:数据元素及直接后继的存储位置(地址)组成一个数据元素的存储结构,称为一个结点;结点的数据域:保存数据元素;结点的指针域:保存数据元素直接后继的存储地址;,线性链表有关术语,2.3.1 线性链表,存储数据元素,存储后继结点 存储地址,2.3.1 线性链表,头指针:存放线性链表中第一个结点的存储地址;空指针:不指向任何结点,线性链表最后一个结点的指针通常是空指针;头结点:链表的第一个元素结点前的附加结点;,head是
9、头指针,头结点,空指针,head,线性链表的每个结点中只有一个指针域故也称为单链表,插入结点(存a),q-deta=a;q-next=p-next;p-next=q;,head,y,x,p,head,q,4)删除结点,q=p-next;p-next=q-next;free(q);,head,y,x,q,head,p,p,随机存储结构、顺序存取结构,1 循环链表 循环链表是将线性链表的最后一个结点的指针指向链表的第一个结点(首尾相连的单链表),循环链表,(a)非空表(b)空表,2双向链表,3 栈和队列,栈是限定仅能在表尾一端进行插入、删除操作的线性表,(a1,a2,.,ai-1,ai,ai+1,
10、an),插入,删除,什么是栈?,3.1 栈,3.1 栈,将表中允许进行插入、删除操作的一端称为栈顶(Top),栈顶的当前位置是动态变化的,由一个栈顶指针指示其位置。表的另一端称为栈底(Bottom)。当栈中没有元素时称为空栈。栈的插入操作称为进栈或入栈,删除操作称为出栈或退栈。,3.1 栈,栈的示意图,出栈,进栈,栈的特点后进先出,第一个进栈的元素在栈底,最后一个进栈的元素在栈顶,第一个出栈的元素为栈顶元素,最后一个出栈的元素为栈底元素,B,例:如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是?A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2D)任意顺
11、序,32 队列,什么是队列,队列是限定仅能在表头进行删除,表尾进行插入的线性表,(a1,a2,.,ai-1,ai,ai+1,an),插入,删除,33 队列,a1 a2 a3 an,入队列,队头,队尾,出队列,队 列 的 示 意 图,队列的特点先进先出,第一个入队的元素在队头,最后一个入队的元素在队尾,第一个出队的元素为队头元素,最后一个出队的元素为队尾元素,rear,front,J1,rear,front,J2,(a)空队列,(b)J1,J2相继入队列,(c)J1出队,(d)J3,J4,J5和J6相继入队之后,J2出队,rear,front,3.3 队列,rear,front,J5,J4,J3
12、,front,rear为整数,J2,J6,3.3 队列,3.循环队列,(b)队空,(a)队满,J7,3.3 队列,判分队空、队满方法:1)另设一个标志S以区分队空、队满。S=0 队空:front=rear;S=1 队满:front=rear;2)或少用一个空间Real+1=front 为满栈、队列的存储结构?,front,(c),4 树和二叉树,4 1 树的定义,树是n个结点的有限集合T,当n=0时,称为空树;当n0时,T满足如下条件:在任一棵非空树中:(1)有且仅有一个称为根的结点。(2)其余结点可分为M个互不相交的子集合,而且这些子集中的每一个本身又是一棵树,也称为根的子树。,树的实例树可
13、表示具有分枝结构关系的对象,例1家族族谱 设某家庭有13个成员A、B、C、D、E、F、G、H、I、J、K、L、M,他们之间的关系可用树表示:,计算机中树是常用的数据组织形式 尽管有些应用中数据元素之间并不存在分支结构关系,但为了便于管理和使用数据,将它们用树的形式来组织。例2 计算机的文件系统 不论是DOS文件系统还是window文件系统,所有的文件都是用树的形式来组织的。,树的 基本术语 树的结点:包含一个数据元素及若干指向子树的分支;孩子结点:结点的子树的根称为该结点的孩子,B、C是A的孩子;双亲结点:B 结点是A 结点的孩子,则A结点是B 结点的双亲;兄弟结点:同一双亲的孩子结点,H、I
14、、J互为兄弟;,树的 基本术语结点的层次:根结点的层次定义为1;根的孩子为第二层,依此类推;树的深度:树中所有结点的层次的最大值结点的度:结点子树的个数树的度:树中结点度的最大值。叶子结点:度为 0 的结点;分枝结点:度不为0的结点;,4.2 二叉树 二叉树的定义二叉树:或为空树,或由根及两颗互不相交的左子树、右子树构成,并且左、右子树本身也是二叉树。,二叉树中每个结点最多有两个子树;既:每个结点度小于等于2;左、右子树不能颠倒有序树;,(a)、(b)是不同的二叉树,(a)的左子树有四个结点,(b)的左子树有两个结点,(a),(b),F,A,二叉树的基本形态,(a)空树,(b)只有根,(c)右
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 等级 基础 数据结构
链接地址:https://www.31ppt.com/p-6011728.html