建一个顺序数据的存储结构是指的线性表,再给定的位置插入给定的元素,输出最后的线性表用C++

线性表的数据的存储结构是指结構定义及基本操作(实验报告)

掌握线性表顺序数据的存储结构是指结构的特点

熟练掌握顺序表的基本运算

熟练掌握线性表的链式数据的存储结构是指结构定义及基本操作

理解循环链表和双链表的特点和基本运算

加深对顺序数据的存储结构是指数据结构的理解和链式数据的存储结构是指数据结构的理解

完成顺序表的基本操作:初始化、插入、删除、逆转、输出、销毁

表、求表长、查找元素、判线性表是否为涳

能够对顺序表进行如下操作:

实现动态空间分配的初始化

根据顺序表结点的位置插入一个新结点

也可以根据给定的值进行插入

根据顺序表结点的位置删除一个结点

也可以根据给定的值删除对应的第一

或者删除指定值的所有结点

利用最少的空间实现顺序表元素的逆转

实现顺序表的各个元素的输出

对顺序线性表的所有元素删除

由同种数据元素构成的有序序列嘚数据的存储结构是指结构

线性表的元素个数称为表长
线性表没有元素时称为空表
线性表的起始位置称为表头,线性表的结束位置稱为表尾


 

线性表的初始化,即建立一个空线性表

疑问:动态分配空间大小怎么确定?


数据结构是介于数学计算机硬件和计算机软件三者之间的一门核心课程

勤于思考,多做练习多上机,善于寻求帮助不怕困难不放弃

具体问题抽象为数据模型(分析問题,提取操作对象找出操作对象之间的关系,用数学语言描

述)设计算法,编程、调试、运行

数据:能输入计算机且能被计算机处悝的各种符号的集合信息的载体,是对客观事物符号化的表示能够被计算机识别、数据的存储结构是指和加工。包括整数、实数、文芓、图像、图形、声音

数据元素:是数据的基本单位在计算机程序中通常作为一个整体进行考虑和处理,也简称为元素或称为记录,結点或顶点

数据项:构成数据元素的不可分割的最小单位

数据>数据元素>数据项

数据对象:是性质相同的数据元素的集合是数据的一个子集

数据结构包括:逻辑结构,(物理结构数据的存储结构是指结构)数据的运算和实现

线性结构:有且只有一个开始和一个终端结点,並且所有的节点都最多只有一个直接前驱和一个直接后继:线性表栈,队列串

非线性结构:一对多,多对一一个节点可能有多个直接前驱和直接后继,例如:树图

顺序数据的存储结构是指结构:用一组连续的数据的存储结构是指单元一次数据的存储结构是指数据元素,数据元素之间的逻辑关系由元素的数据的存储结构是指位置来表示

链接数据的存储结构是指结构:用一组任意的数据的存储结构是指單元数据的存储结构是指数据元素数据元素之间的逻辑关系用指针来表示

索引数据的存储结构是指结构:在数据的存储结构是指节点信息的同时,还建立附加的索引表

散列数据的存储结构是指结构:根据节点的关键字直接计算出该节点的数据的存储结构是指地址

数据类型昰一组性质相同的值的集合以及定义于这个值集合上的一组操作的集合

抽象数据类型形式定义:(DS,P)D:是数据对象S:是D上的关系集P:昰对D的基本操作集

算法:对特定问题求解方法和步骤的一种描述

流程图:传统流程图NS流程图

一个问题可以有多种算法

算法特性:有穷性,确定性可行性,输入输出

算法设计的要求:正确性,可读性健壮性,高效性

算法分析:时间效率空间效率

为了便于比较不同算法的时间效率,我们仅比较数量级(渐进表示法)

一般情况下不必计算所有操作的执行次数,而只考虑算法中基本操作执行的次数

常数項去掉只保留最高次项的数量级(忽略所有低次幂项和最高次幂系数)

1.找出语句频度最大的那条语句作为基本语句
2.计算基本语句的频度嘚到问题规模n的某个函数f(n)
3.取其数量级用符号“O”表示

空间复杂度:算法所需数据的存储结构是指空间的度量

抽象数据类型=数据的逻辑结构+抽象运算

字母表:数据元素是字母,元素间关系是线性

线性表中数据元素的类型可以为简单类型也可以为复杂类型

顺序数据的存储结构昰指结构和链式数据的存储结构是指结构

顺序数据的存储结构是指结构,逻辑结构上相邻物理结构上也相邻

顺序表:地址连续,依次存放随机存取,类型相同

顺序表的查找算法分析:因为查找算法的基本操作为:将记录的关键字同给定值进行比较

为确定记录在表中的位置需要与给定值进行比较的关键字的个数的期望值叫做查找算法的平均查找长度

顺序表放在最后的位置,最简单直接放置就好
顺序表插入位置在中间,把插入位置后面的元素依次往后搬把那个位置空出来,在插入
顺序表插入位置在最前面如上
1.判断插入位置i是否合法
2.判断顺序表的数据的存储结构是指空间是否已满,若已满返回error
3.将n至第i位的元素依次向后移动一个位置空出第i个位置
4.将要插入的新元素e放叺第i个元素
5.表长加1,插入成功返回ok
算法时间主要耗费在移动元素的操作上
若插入在尾节点之后则根本无需移动(特别快)
若插入在首节點之前,则表中元素全部后移(特别慢)
若要考虑各种位置插入(共n+1种可能)的平均移动次数该如何计算?n/2

删除位置在最后:直接删除僦行
删除位置在中间:删除位置后的元素依次往前搬
删除位置在最前面:如上
1.判断删除位置i是否合法(合法值为1<i<n)
2.将欲删除的元素保留在eΦ
3.将第i+1至第n位的元素依次向前移动一个位置
4.表长减1删除成功返回OK
算法时间主要耗费在移动元素的操作上
若删除尾节点,则根本无需移动(特别快)
若删除首节点则表中n-1个元素全部前移(特别慢)
若要考虑在各种位置删除(共n种可能)的平均移动次数,给如何计算n-1/2

1.利用數据元素的数据的存储结构是指位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构与数据的存储结构是指结构一致
2.在訪问线性表时可以快速计算出任意一个数据元素的数据的存储结构是指位置。因为可以粗略的认为访问每个元素所花时间相等
这种数據的存储结构是指方法是随机数据的存储结构是指法
查找,插入删除算法的平均时间复杂度为O(n)
空间复杂度为O(1)(没有占用辅助空间)
优点:数据的存储结构是指密度大(节点本身所占数据的存储结构是指量/节点数据的存储结构是指所占数据的存储结构是指量)
可以随机存取表中任意元素
缺点:在插入,删除某一元素时需要移动大量元素
属于静态数据的存储结构是指形式,数据元素的个数不能自由扩充

逻辑結构和物理结构不一定一致
一个节点有两部分数据域和指针域
单链表:节点只有一个指针域的链表,称为单链表或线性链表
双链表:节點有两个指针域的链表称为双链表
循环链表:首尾相连的链表称为循环链表
头指针:是指向链表中第一个节点的指针
首元结点:是指链表中数据的存储结构是指第一个数据元素的节点
头节点:是在链表的首元结点之前附设的一个节点

在链表中设置头结点有什么好处?
1.便于艏元结点的处理
首元结点的地址保存在头结点的指针域中所以在链表的第一个位置上的操作和其他位置一直,无须进行特殊处理
2.便于空表和非空表的统一处理
无论链表是否为空头指针都是指向头结点的非空指针,因为空表和非空表的处理也就统一了

头结点的数据域内装嘚是什么
头结点的数据域可以为空,不计入链表长度中

1.节点在数据的存储结构是指器中的位置是任意的即逻辑上相邻的数据元素在物悝上不一定相邻。
2.访问时只能通过头指针进入链表并通过每个节点的指针域依次向后顺序扫描其余节点,所以寻找第一个节点和最后一個节点所花费的时间不等

循环链表:前驱节点数据域,后继节点

单链表的销毁:链表销毁后不存在
从头指针开始依次释放所有节点

清涳链表:链表仍存在,单链表中无元素变成空链表
依次释放所有节点,并将头结点指针设置为空

求链表的表长:从首元结点开始依次計数所有节点

取值:从链表的头指针出发,顺着链域next逐个节点往下搜索直至搜索到第i个节点为止。因此链表不是随机存取结构

从第一個节点起,依次和相比较
如果找到一个其值与e相等的数据元素则返回其在链表中的位置或地址
如果查遍整个链表都没有找到其值和e相等嘚元素,则返回0或NULL

插入:在第i个节点前插入值为e的新节点
首先找到ai-1的数据的存储结构是指位置p
生成一个数据域为e的新节点s
插入新节点新節点的指针域指向节点ai,节点ai-1的指针域指向新节点

首先找到ai-1的数据的存储结构是指位置p保存要删除的ai的值

单链表的查找,插入删除算法时间效率分析

头插法:1.从一个空表,重复读入数据
2.生成新节点将读入数据存放到新节点的数据域中
3.从最后一个节点开始,依次将各节點插入到链表的前端

后插法:1.从一个空表L开始将新节点逐个插入到链表的尾部,为指针r指向链表的尾结点
2.初始时r同L均指向头结点,每讀入一个数据元素则申请一个新节点将新节点插入到尾节点后,r指向新结点

循环链表:是一种首尾相连的链表
优点:从表中任意结点出發均可找到表中其他结点

双向链表:左指针域数据域,右指针域
让头结点的前驱指针指向链表的最后一个节点
让最后一个节点的后继指針指向头结点

节点空间可以动态申请和释放
数据元素的逻辑次序靠节点的指针来指示插入和删除时不需要移动数据元素
数据的存储结构昰指密度小,每个节点的指针域需要额外占用数据的存储结构是指空间当每个节点的数据域所占字节不多时,指针域所占数据的存储结構是指空间的比重显得很大
链式数据的存储结构是指结构式非随机存取结构对任意节点的操作都要从头指针依指针链查找到给节点,这增加了算法的复杂度

已知线性表La和Lb中的数据元素按值非递减有序排列现要求将La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减囿序排列
依次从La或Lb中摘取元素值较小的节点插入到Lc表的最后直至其中一个表变空为止
继续讲La或Lb其中一个表的剩余节点插入到Lc表的最后

栈囷队列是两种常见的,重要的数据结构
栈和队列是限定插入和删除只能在表的端点进行的线性表
栈和队列是线性表的子集(是插入和删除位置受限的线性表)

栈(stack)是一个特殊的线性表是限定仅在一端进行插入和删除操作的线性表,LIFO
表尾称为栈顶表头称为栈底
入栈:插叺元素到栈顶 PUSH
出栈:删除最后一个元素的操作 POP

1.定义:限定只能在表的一端进行插入和删除运算的线性表
2.逻辑结构:与同线性表相同,仍为┅对一关系
3.数据的存储结构是指结构:用顺序栈或链栈均可但以顺序栈更常见
4.运算规则:只能在栈顶运算,且访问节点时依照后进先出(LIFO)的规则
5.实现方式:关键是编写入栈和出栈函数具体实现依顺序栈或链栈的不同而不同

队列是一种先进先出(FIFO)的线性表,在表的一端插入在另一端删除
1.定义:只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表
2.逻辑结构:与同线性表相同仍为一对┅关系
3.数据的存储结构是指结构:顺序队或链队,以循环顺序队列更常见
4.运算规则:只能在队首和队尾运算且访问节点时依照先进先出(FIFO)的原则
5.实现方式:关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同

栈的应用:进制转换符号对称检验,表达式求值等等

运算符:算符运算符关系运算符和逻辑运算符
界限符:左右括号和表达式结束符

为了实现表达式求值,需要设置两个栈:
一个昰算符栈OPTR用于寄存运算符
另一个称为操作数栈OPND,用于寄存运算数和运算结果

求值的处理过程是自左至右扫描表达式的每一个字符
当扫描箌的是运算数则将其压入栈OPND,
当扫描到的是运算符时:
若这个运算符比OPTR栈顶运算符的优先级高则入栈OPTR,继续向后处理
若这个运算符比OPTR棧顶运算符的优先级低则从OPND栈中弹出两个运算数,从栈OPTR中弹出栈运算符进行运算并将运算结果压入栈OPND
继续处理当前字符,直到遇到结束符位置

栈的表示和操作的实现:
数据的存储结构是指方式:同一般线性表的顺序数据的存储结构是指结构完全相同利用一组地址连续嘚数据的存储结构是指单元依次存放自栈底到栈顶的数据元素,栈底一般在低地址端
附设top指针指示栈顶元素在顺序栈中的位置(但是,為了方便操作通常top指示真正的栈顶元素之上的下标地址)
另设base指针,指示栈底元素在顺序栈中的位置

链栈是运算受限的单链表只能在鏈表头部进行操作
空栈相当于头结点指向空
插入和删除仅在栈顶出执行

若一个对象部分地包含他自己,或用他自己给自己定义则称这个對象是递归的
若一个过程直接地或间接地调用自己,则称这个过程是递归的过程

分治法:对于一个比较复杂的问题能够分解成几个相对簡单的且揭发相同或类似的子问题来求解

将实参,返回地址等传递个被调用函数
为被调用函数的局部变量分配数据的存储结构是指区
将控淛转移到被调用函数的入口
保存被调用函数的计算结果
释放被调用函数的数据区
依照被调用函数保存的返回地址将控制转移到调用函数

队列的表示和操作的实现
队列(Queue)是仅在表尾进行插入操作在表头进行删除操作的线性表
表尾称为队尾,表头称为对头
插入元素称为入队删除元素称为出队
队列的数据的存储结构是指结构为链队或顺序队(常见循环顺序队)

将堆空间设想成一个循环的表,即分配给队列的m個数据的存储结构是指单元可以循环使用当rear为maxqsize时,若向量开始端空着又可从头试用空着的空间。当front为maxqsize时也是一样

若用户无法估计所鼡队列的长度,则宜采用链队列

栈和队列是操作受限的线性表

串中元素中只能是字符属于内容受限的线性表

子串:一个串中任意个连续芓符组成的子序列称为该串的子串
例如,“abcde”的子串有:“”“a”,“ab”“abc”,“abcd”“abcde”等
真子串是指不包括自身的所有子串

子串:串中任意个连续字符组成的子序列称为该串的子串
主串:包括子串相应的称为主串
字符位置:字符在序列中的序号为该字符在串中的位置
子串位置:子串第一个字符在主串中的位置
空格串:由一个或多个空格组成的串,与空串不同

串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相同时这两个串才是相等的

确定主串中所包含子串第一次出现的位置

数组:按一定格式排列起来的
具有相同类型的数据元素的集合

稀疏矩阵可以用三元组法来表示(行坐标,列坐标数值)
三元组顺序表的优点:非零元在表中按行序有序数据的存儲结构是指,因此便于进行依行顺序处理的矩阵运算
三元组顺序表的缺点:不能随机存取若按行号存取某一行中的非零元,则需从头开始进行查找

优点:他能灵活的插入因运算而产生的新的非零元素删除因运算而产生的新的零元素,实现矩阵的各种运算
在十字链表中矩阵的每一个非零元素用一个节点表示,该节点除了(rowcol,value)以外还要有两个域:
right:用于连接同一行中的下一个非零元素
down:用于连接同┅列中的下一个非零元素

表头:若LS非空,则其第一个元素a1就是表头注:表头可以使原子,也可以是子表
表尾:出表头之外的其他元素组荿的表注:表尾不是最后一个元素,而是一个子表

B=(())长度为1表头,表尾均是()

表头为a表尾为((b,c))

D=(x,y,z)长度为3每一项都是原子
表頭为x,表尾为(yz)

E=(C,D)长度为2,每一项都是子表
表头为C表尾为(D)

F=(a,F)长度为2,第一项为原子第二项为它本身
表头为a,表尾为(F)

广义表Φ的数据元素有相对次序,一个直接前驱和一个直接后继
广义表的长度定义为最外层所包含的元素个数
如:C=(a(b,c))是长度为2的广义表
广義表的深度定义为该广义表展开后所含括号的重数
原子的深度为0空表的深度为1

广义表可以看成是线性表的推广,线性表时广义表的特例
廣义表结构相当灵活在某种前提下,他可以兼容线性表数组,数和有向图等各种常用的数据结构
当二维数组的每行作为子表处理时②维数组即为一个广义表
另外,树和有向图也可以用广义表来表示
由于广义表不仅集中了线性表数组,数和有向图等常见数据结构的特點而且可有效地利用数据的存储结构是指空间,因此在计算机的许多引用领域都有成功使用广义表的实例

树的其他表示方式:嵌套集合广义表,凹入表示
根节点:非空树种无前驱节点
节点的度:节点拥有的子树数
树的度:树内各节点的度的最大值
度=0叶子,终端节点
度=/0分支节点,非终端节点根节点以外的分支节点称为内部节点
节点的子树的根称为该节点的孩子,该节点称为孩子的双亲
节点的祖先:從根到该节点所经分支上的所有节点
节点的子孙:从某节点为根的子树中任一节点
树的深度:树中节点的最大层次

有序树:树中节点的各孓树从左至右有次序
无序树:树中节点的各子树无次序

森林:是m(>=0)棵互不相交的树的集合
把根节点删除树就变成了森林
一颗树可以看成昰一个特殊的森林
给森林中的各子树加上一个双亲节点森林就变成了树

树一定是森林,森林不一定是森林

二叉树的结构最简单规律性朂强

二叉树是n(n>=0)个节点的有限集,他或者是空集(n=0)或者由一个根节点及两棵互不相交的分别称为这个跟的左子树和右子树的二叉树組成
子树有左右之分,其次序不能颠倒
二叉树可以输空集合根可以有空的左子树或空的右子树

二叉树不是树的特殊情况,他们是两个概念
二叉树节点的子树要区分左子树和右子树及时只有一棵子树也要进行区分,说明他是左子树还是右子树
树当节点只有一个孩子时就無序区分他是左还是右的次序,因此二者是不同的这是二叉树和树的最主要的差别

二叉树的5种基本形态:

性质1:在二叉树的第i层上至多囿2的i-1次方个节点
性质2:深度为k的二叉树至多有2的k次方-1个节点
性质3:对任何一颗二叉树T,如果其叶子数为n0,度为2的节点数为n2则n0=n2+1
性质4:具有n个節点的完全二叉树的深度为log2n的底+1

适用于满二叉树和完全二叉树
节点:左孩子,数值右孩子

在n个节点的二叉链表中,有n+1个空指针域

节点:咗孩子数值,双亲结点右孩子

遍历二叉树:顺着某一条搜索路径巡防二叉树中节点,使得每个节点均被访问依次而且仅被访问一次
遍历目的:得到树中所有节点的一个线性排列

先序遍历:根节点,左子树右子树
中序遍历:左子树,根节点右子树
后序遍历:左子树,右子树根节点

已知二叉树的先序和中序序列,构造出相应的二叉树

后序序列:DECBHGFA请画出这棵二叉树

利用二叉链表的空指针域:
如果某個节点的左孩子为空,则将空的左孩子指针域改为指向其前驱;如果某节点的右孩子为空则将空的右孩子指针域改为指向其后继,这种妀变指向的指正称为线索加上线索的二叉树称为线索二叉树

数据域:存放节点本身信息

双亲域:指示本节点的双亲节点在数组中的位置

0
0
0
0

實现:用二叉链表做树的数据的存储结构是指结构,链表中的每个节点的两个指针域分别指向其第一个孩子节点和下一个兄弟节点

加线:茬兄弟之间加一连线
抹线:对每个节点除了其左孩子外,去除其与其余孩子之间的关系
旋转:以树的根节点为轴心将整树顺时针转45°

加线:若p节点时双亲节点的左孩子,则将p的右孩子右孩子的右孩子…沿分支找到的所有右孩子,都与p的双亲用线连起来
抹线:抹掉原二叉树中双亲的右孩子之间的连线
调整:将节点按层次排列形成树结构
口诀:左孩右右连双亲,去掉原来右孩线

将每棵树的根节点用线相連
以第一棵树根节点为二叉树的根在以根节点为轴心,顺时针旋转构成二叉树型结构

抹线:将二叉树中根节点与其右孩子连线,及沿祐分支搜索到的所有右孩子间连线全部抹掉使之变成孤立的二叉树
还原:将孤立的而出书还原成树
口诀:去掉全部右孩线,孤立二叉再還原

将森林看做有三部分构成:
1.森林中第一棵树的根节点
2.森林中第一棵树的子树森林
3.森林中其他树构成的森林

路径:从树中一个节点到另┅个节点之间构成这两个节点间的路径
节点的路径长度:两节点间路径上的分支数
权:将树中节点赋给一个有着某种含义的数值则这个數值成为该节点的权
节点的带权路径长度:从跟根节点到该节点之间的路径长度与该节点的权的乘积

哈夫曼树:最优树(带权路径长度最短的树)

若将编码设计为长度不等的二进制编码,即让待传字符串中出现次数较多的字符采用尽可能短的编码则转换的二进制字符串便鈳能减少

关键:要设计长度不等的编码,则必须使任一字符的编码都不是另一字符的编码的前缀

统计字符集中每个字符在电文中出现的平均概率
利用哈夫曼树的特点:权越大的叶子离根越近;将每个字符的概率作为权值构造哈夫曼树。则概率越大的节点路径越短。
在哈夫曼树的每个分支上标0或1:节点的左分支标0右分支标1。把从根到每个叶子的路径上的标号连接起来作为该叶子代表的字符的编码

为什麼哈夫曼编码能够保证是前缀编码?
因为没有一片树叶是另外一片树叶的祖先所以每个叶节点的编码就不可能是其他叶节点编码的前缀

為什么哈夫曼编码能够保证字符编码总长最短?
因为哈夫曼树的带权路径长度最短故字符编码的总长最短

V:顶点的有穷非空集合
无向图:烸条边都是无方向的
有向图:每条边都是有方向的
完全图:任意两个点都有一条边相连
稀疏图:有很少边或弧的图
稠密图:有较多边或弧嘚图
领接:有边/弧相连的两个顶点之间的关系
关联:边/弧与顶点之间的关系
顶点的度:与该顶点相关联的边的数目
在有向图中,顶点的度等于该节点的入度和出度之和

图没有顺序数据的存储结构是指结构但可以借助二维数组来表示元素间的关系:数组表示法
链式数据的存儲结构是指结构:多重链表:领接表,领接多重表十字链表

浪费时间-统计稀疏图中一共有多少条边

方便找任一顶点的所有领接点
方便计算任一顶点的度?
对有向图:只能计算出度;需要构造逆领接表来方便计算入度
不方便检查任意一对顶点间是否存在边

领接矩阵与领接表表示法的关系
1联系:领接表中每个链表对应于领接矩阵中的一行,链表中节点个数等于一行中非零元素的个数
2区别:对于任一确定的無向图,领接矩阵是唯一的但领接表不唯一(前插法,后插法)
领接矩阵的空间复杂度为n的平方领接表的空间复杂度为r+e
3,用途:玲姐矩阵多用于稠密图;而领接表多用于稀疏图

时间复杂度:领接矩阵O(n的平方)O(领接表n+e)
时间复杂度:领接矩阵O(n的平方),O(领接表n+e)
比较:涳间复杂度相同都是O(n)
时间复杂度只与数据的存储结构是指结构有关而与搜索路径无关

生成树:所有顶点均由边连接起来,但不存在回路嘚图
一个图可以有很多棵不同的生成树
所有生成树具有以下共同特点
1.生成树的顶点个数与图的顶点个数相同
2.生成树是图的极小连通子图詓掉一条边则非连通

最小生成树:给定义个无向网络,在该网的所有生成树中使得各边权值之和最小的那颗生成树称为该网的最小生成樹,也叫最小代价生成树

普里姆算法 :选择点:适合稠密图:时间复杂度n的平方
克鲁斯卡尔算法:选择边:适合稀疏图:时间复杂度:eloge

有姠无环图:无环的有向图

关键字的平均比较次数也称为平均查找长度

复杂度为n的平方,领接表的空间复杂度为r+e
3用途:玲姐矩阵多用于稠密图;而领接表多用于稀疏图

时间复杂度:领接矩阵O(n的平方),O(领接表n+e)
时间复杂度:领接矩阵O(n的平方)O(领接表n+e)
比较:空间复杂度楿同都是O(n)
时间复杂度只与数据的存储结构是指结构有关,而与搜索路径无关

生成树:所有顶点均由边连接起来但不存在回路的图
一个图鈳以有很多棵不同的生成树
所有生成树具有以下共同特点
1.生成树的顶点个数与图的顶点个数相同
2.生成树是图的极小连通子图,去掉一条边則非连通

最小生成树:给定义个无向网络在该网的所有生成树中,使得各边权值之和最小的那颗生成树称为该网的最小生成树也叫最尛代价生成树

普里姆算法 :选择点:适合稠密图:时间复杂度n的平方
克鲁斯卡尔算法:选择边:适合稀疏图:时间复杂度:eloge

有向无环图:無环的有向图

关键字的平均比较次数,也称为平均查找长度

我要回帖

更多关于 数据的存储结构是指 的文章

 

随机推荐