王道数据结构
文章平均质量分 84
主要是依据于王道数据结构这本书的笔记,详细记录了每一条知识点,绝对物超所值,全网最详细。
张张同学!
其实路上风再大也没有关系。
展开
-
数据结构查找(二分、分块、折半、哈希查找)
若设表中元素存放于0~n-1号位置,如果表中没有与给定值相等的元素,从前向后查找的数据比较停留在第n个位置,这恰恰是新元素插入的位置,而从后向前查找的数据比较停留在第-1个位置,该位置不能插入,但入们习惯于把返回-1视为查找失败的信息。查找成功的平均查找长度是找到表中每一个元素的可能比较次数的总平均值,查找不成功的平均查找长度是查找在表中没有的元素的可能比较次数的总平均值。下图(b)是二叉查找树,每个结点的关键码大于其左子树(非空)上所有结点的关键码,小于其右子树(非空)上所有结点的关键码。原创 2022-11-06 21:15:03 · 389 阅读 · 0 评论 -
图第三遍补充(各种算法与力扣)
如果具有n个结点的图中是一个环,则会有n个不同的生成树,每个生成树有n-1条边,,为连通分量,边数小于n-1,则图必为非连通图。线性表可以是空表,一个元素也没有;树可以是空树,一个结点也没有但图不可以一个顶点也没有,所谓空图是指图中的边数为零。图的顶点集合一定非空,而边集合可以为空。顶点的度是指与顶点相关联的边数,对于有向图,还要区分出度和入度在有向图中的边是有向的,与是不同的两条边。在无向图中的边是无向的, (x.y)与(y,x)是同一条边。原创 2022-10-28 21:17:06 · 1134 阅读 · 1 评论 -
数据结构第三遍补充(图的应用)
(2) 设有向图G=(V,E), 其中V= {a,b,c,d,e}, E={, , , , , ,, ,}(12)设计一个算法利用图的遍历方法输出一个无向图G中从顶点V:到V的长度为S的简单路径,设图采用邻接链表作为存储结构。(8)已知带权有向图如图7-30所示,请利用Floyd算法求出每对顶点之间的最短路径及路径长度。(10)拓扑排序的结果不是唯一的,请给出如图7-32所示的有向图的所有可能的拓扑序列。原创 2022-10-24 15:42:39 · 1430 阅读 · 1 评论 -
王道数据结构2(线性表)
线性表具有相同数据类型的n个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为L=(a1,a2,…ai,ai+1,…an)① 各个元素所占的存储空间是一样的②有限序列,所有整数不是线性表③属于逻辑结构表头、表尾除了第一个元素以外,其余元素都可以找到它的直接前驱(有且只有一个);除最后一个元素外,其他元素都可以找到它的直接后继(有且只有一个)。1.顺序表——把顺序存储的方式实现线性表顺序存储。原创 2022-09-15 16:56:49 · 1585 阅读 · 0 评论 -
王道数据结构(顺序表上基本操作的实现)
王道数据结构(顺序表上基本操作的实现)原创 2022-07-16 22:13:04 · 210 阅读 · 0 评论 -
王道单链表
13.两个乱序单链表合并成一个有序单链表。14.将一个链表分解成偶数连与奇数连。12.建立一个非递减有序单链表。1.按位序插入(带头结点)2.按位序插入(不带头结点)5.按位序删除(带头结点)10.单链表创建带头结点。3.指定结点的后插操作。4.指定结点的前插操作。7.尾插法建立单链表。......原创 2022-07-22 09:44:37 · 344 阅读 · 0 评论 -
王道其他链表
1.要访问某个结点的前驱结点(插入、删除操作时),只能从头遍历,访问后续结点的时间复杂度O(1),访问前驱结点的时间复杂度O(n)5.如果设的是头指针,那么对表尾操作需要O(n),设的是尾指针r,r->next表示的是表头,对表头表尾操作只需要O(1)6.循环双链表,当结点为尾结点,->next=L,当循环双链表为空表,其头结点的priornext都等于L。1.循环单链表与单链表的区别在于,表中最后一个结点的指针不是NULL,而是改为指向头结点,形成一个环。②从头结点出发找到位序为i-1的结点。...原创 2022-07-25 18:42:53 · 512 阅读 · 0 评论 -
王道3.1 顺序栈以及链式栈
4.采用链式存储的栈称为链栈,链栈便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。通常采用单链表实现,并且所有操作都是在单链表的表头进行的。在本文中主要是介绍了顺序栈下的一些基本操作,关于链栈的实现与单链表类似,5.n个不同元素进栈,出栈元素不同排列个数为,例如,五个元素就有=42种。②栈底bottom固定的,不允许进行插入和删除的另一端。6.栈的基本操作初始化、判空、出栈、进栈、读栈、销毁栈。由于初始设置S.top=-1,故栈顶指针先加一,再入栈。3.栈只能对栈顶进行操作。...原创 2022-07-29 15:32:11 · 1436 阅读 · 0 评论 -
王道3.2 队列
3)类型中增设tag数据成员,tag=0时,就说嘛是因为删除导致的Q.rear=Q.front,则表示队空;tag=1时,就说嘛是因为插入导致的Q.rear=Q.front,则表示队满。(2)类型中增设表示元素个数的数据成员,这样,队空就是Q.size==0。队满就是Q.size。......原创 2022-07-29 17:11:40 · 229 阅读 · 0 评论 -
王道3.3 栈的应用以及队列的应用
从左往右扫描,每遇到一个运算符,就让运算符前面最近的两个操作数执行对应运算,合体为一个操作数。② 选择下一个运算符,按照**[左操作数 右操作数 运算符]**的方式组合成一个新的操作数。② 选择下一个运算符,按照**[运算符 左操作数 右操作数]**的方式组合成一个新的操作数。③ 若扫描到运算符,则弹出两个栈顶元素,执行相应运算,运算结果压回栈顶,回到①。A+B*(C-D)-E/F 前缀: +A-*B-CD/EF。② 若扫描到操作数就压入栈,并回到①,否则执行③。① 确定中缀表达式各个运算符的运算顺序。.原创 2022-08-02 16:40:13 · 582 阅读 · 0 评论 -
王道数据结构(串4)
假设有串 T = ‘’, S = ‘iPhone 11 Pro Max?(1)赋值操作,把串T赋值为chars;(2)复制操作,把串S复制得到串T(3)判空操作,若S为空串,则返回TRUE,否则返回False;(4)求串长,返回串S的元素个数;(5)清空操作,将S清为空串;(6)销毁串,将串S销毁——回收存储空间;(7)串联联接,用T返回由S1和S2联接而成的新串———可能会导致存储空间的扩展;(8)求子串,用Sub返回串S的第pos个字符起长度为len的子串;(9)...原创 2022-08-08 22:14:31 · 507 阅读 · 0 评论 -
王道数据结构5(树与二叉树)
特点:①每个结点至多只有两棵子树 ②左右子树不能颠倒(二叉树是有序树)二叉树(Binary tree )是n(n≥0)个结点的有限集合。若n=0时称为空树,否则:(1)有且只有一个特殊的称为树的根(Root)结点;(2)若n>1时,其余的结点被分成为二个互不相交的子集TTT1,TTT2,分别称之为左、右子树,并且左、右子树又都是二叉树。由此可知,二叉树的定义是递归的。特点:二叉树结构简单,存储效率高,树的操作算法相对简单,且任何树都很容易转化成二叉树。...............原创 2022-08-12 21:01:04 · 1718 阅读 · 0 评论 -
王道数据结构5.2(树的应用)
简称平衡树(AVL树)—书上任意结点的左子树和右子树的高度之差不超过1。【G.M.Adelson-Velsky和E.M.Landis】结点的平衡因子=左子树高-右子树高。平衡二叉树结点的平衡因子的值只可能是-1,0或1。只要有任意一点平衡因子绝对值大于1,则不是平衡二叉树。构造结构//二叉排序树结点 typedef struct AVLNode {int key;//平衡因子 struct AVLNode * lchild , * rchild;...原创 2022-08-27 16:05:44 · 845 阅读 · 0 评论 -
王道数据结构6(图)
/对无向图,用0,1表示是否相邻,对于带权图,为权值 InfoType * info;//该弧相关信息的指针 } RrcCell , AdjMatrix [ MAX_VERTEXT_NUM ] [ MAX_VERTEXT_NUM ];//邻接矩阵20//对无向图,用0,1表示是否相邻,对于带权图,为权值 InfoType * info;//该弧相关信息的指针 } RrcCell , AdjMatrix [ MAX_VERTEXT_NUM ] [ MAX_VERTEXT_NUM ];.........原创 2022-08-22 18:25:46 · 1414 阅读 · 0 评论 -
王道数据结构6.2(图的应用)
对于一个带权连通无向图G=(V,E),生成树不同,每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合,若T为R中边的权值之和最小的生成树,则T称为G的最小生成树。一个连通图的生成树包含图的所有的顶点,并且只尽可能少的边,对于生成树而言,若砍去它的一条边,则生成树变成非连通图,若给它增加一条边,则会形成图中的一条回路。只有连通图才有生成树,非连通图只有生成森林。如果一个连通图本身就是一棵树,则其最小生成树就是它本身。.........原创 2022-08-31 17:29:33 · 845 阅读 · 0 评论 -
王道数据结构7(查找)
基本思想:将查找表分为若干个子块,块内的元素可以无序,但块之间是有序的,即第一个块中的最大关键字小于第二个块中的所有记录的关键字,第二个快中的最大关键字小于第三个快中的所有记录的关键字。第三轮,20原创 2022-09-06 20:20:57 · 628 阅读 · 1 评论 -
王道数据结构8(排序)
(1)平均时间性能:以快速排序法最佳,但最坏情况下不如堆排序和归并排序;在n较大时,归并排序比堆排序快,但所需辅助空间最多。(2)简单排序以直接插入排序最简单,当下列中记录“基本有序“或n值较小时,是最佳的排序方法。因此常和其他排序方法结合使用。(3)基数排序最适用于n值很大而关键字较小的序列。若关键字也很大,而序列中大多数记录的”最高位关键字”均不同,则也可以先按“最高位关键字”不同将序列分成若干个子序列,而后用直接插入排序。...原创 2022-08-22 18:27:02 · 2314 阅读 · 1 评论