
数据结构
文章平均质量分 68
纯纯的心塞之路
香蕉皮榨西瓜汁
纯纯心塞的完美主义者
展开
-
为什么有了线性表,还需要有堆栈和队列
空间复杂度问题为什么能用先行白哦,还需要有栈和队列等数据结构原创 2021-08-27 23:29:02 · 441 阅读 · 0 评论 -
数据结构丿丶树 && 哈夫曼树
树和二叉树①②③④⑤ ⑥⑦⑧⑨⑩一、【树】树是 n 个结点的有限集,它为空树或非空树,对于非空树 T: ①有且仅有一个称之为根的结点 ②除根结点之外的其余结点可分为 m 个互不相交的有限集 T1, T2…Tm,其中每个集合本身又是一棵树,并且称之为根的字数(SubTree)树的基本术语 ①结点的度:结点拥有的子树个数成为结点的度 ②树的度:树内各结点度的最大值 ③层次:结点的层次从根开始定义起,根为第一层,根的孩子为第二层,任一结点的层次为其双亲结点的层次加 1 ④树的深度:原创 2021-09-04 12:52:44 · 237 阅读 · 0 评论 -
二叉搜索树 & 二叉平衡树 & 二叉平衡树的调整
①②③④⑤ ⑥⑦⑧⑨⑩二叉搜索树二叉搜索树(BST,Binary Search Tree)也称二叉排序树或二叉查找树①非空左子树的所有键值小于其根结点的键值②非空右子树的所有键值大于其根结点的键值③左、右子树都是二叉搜索树二叉搜索树的查找操作:Find[1]首先从根结点开始,如果树为空,返回 NULL[2]若树非空,则根结点关键字和 X 比较: ①若 X 小于根结点键值,只需在左子树中继续搜索 ②若 X 大于根结点键值,只需在右子树中继续搜索 ③若二者比较结果相等,搜索完成,返原创 2021-09-08 14:34:28 · 421 阅读 · 0 评论 -
有头结点和无头结点链表
头结点概念 首先,单链表是由表头指针所唯一确定的,因此,单链表可以用头指针的名字来命名,若头指针名为 L,则称该链表为表 L 首元结点是指链表中存储第一个数据元素的结点 头结点是在首元结点之前设的一个结点,其 next 指针指向首元结点,其据域可以不存储任何信息。 但头指针永远指向的是链表中第一个结点的指针,有头结点则指向头结点,无则指向首元结点。头指针不可变,要遍历链表应另设结点指针 增加了头结点后,首元结点的地址保存在头结点的指针域中,则对链表的第一个数据元素的操作(插入、删除)与其他的数据原创 2021-08-23 20:48:32 · 1838 阅读 · 0 评论 -
最小生成树、最短路径等图问题解法
图的应用①②③④⑤ ⑥⑦⑧⑨⑩一、【最小生成树】 在 n 个城市之间,选择建造 n-1 条线路,使得总的耗费最少;各边代价和最小的那棵生成树称为该连通网的最小代价生成树,简称最小生成树普利姆算法(加点法) 假设 N = (V,E) 是连通网,TE 是最小生成树中边的集合① U = {u0}(u0∈ V),TE = { }② 在所有 u ∈ V,v ∈ V - U 的边中找一条权值最小的边(u0,v0) 并入集合 TE 中,同时 v0 并入 U③ 重复 ② ,直至 U = V 为止【实原创 2021-09-20 16:14:41 · 505 阅读 · 0 评论 -
数据结构丿丶线性表
线性表线性表是由同类型数据元素构成有序序列的线性结构应用:多项式的表示,图书管理系统顺序存储:*struct LNode{ElemType Data[MAXSIZE]; //ElemType 可以是预先定义的struct类型int last; //指示最后一个元素的下标};typedef struct LNode List; //指向结构的指针struct LNode L;List PtrL;初始化List MakeEmpty(){List PtrL;PtrL=(List原创 2021-08-21 11:24:59 · 297 阅读 · 0 评论 -
数据结构丿丶堆栈
堆栈堆栈是具有一定操作约束的线性表,是一种特殊的线性表,只能在一端(即栈顶Top)做插入、删除,具有先入后出的特点。其中插入为入栈push,删除为出栈pop。主要应用:计算表达式,中缀和后缀表达式*顺序存储struct SNode {ElementType Data[maxsize]; / 存储元素的数组 /int Top; / 栈顶元素下标,empty时为-1 /};typedef struct SNode Stack;建栈Stack CreateStack( int Ma原创 2021-08-21 11:27:11 · 180 阅读 · 0 评论 -
DFS 和 BFS
①②③④⑤ ⑥⑦⑧⑨⑩深度优先搜索(DFS)深度优先搜索的过程 深度优先搜索( Depth First Search,DFS )遍历类似于树的先序遍历,是树的先序遍历推广对于一个连通图①从图中的某个顶点 v 出发,访问 v②找出刚访问过的顶点的第一个未被访问的邻接点,访问该顶点;以该顶点为新顶点,重复此步骤,直到刚访问的顶点没有未被访问的邻接点为止③返回前一个访问过的且仍有未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点④重复步骤 ②、③,直到图中的所有顶点都被访.原创 2021-09-12 20:35:20 · 106 阅读 · 0 评论 -
链表的存在意义
顺序表和单链表有头结点和无头结点博客原创 2021-08-22 15:37:32 · 531 阅读 · 0 评论 -
数据结构丿丶图
图①②③④⑤ ⑥⑦⑧⑨⑩一、【图】图是一种比线性表和树更为复杂的数据结构;在线性表中,数据元素之间仅存在线性关系,每个而数据元素只有一个直接前驱和一个直接后继;在树形结构中,数据元素之间有着明显的层次关系,并且每一层中的数据元素可能和下一层的多个元素相关但只能和上一层中的一个元素相关;而在图结构中,结点之间的关系可以是任意的,任意两个数据元素之间都可能相关图(Graph) G 由两个集合 V 和 E 组成,即为 G = ( V,E),其中 V 是顶点的有穷非空集, E 是边的有穷集合。有向原创 2021-09-12 15:41:16 · 294 阅读 · 0 评论 -
数据结构丿丶队列
队列队列和堆栈一样,也是一种具有一定操作约束的线性表,只允许在一端插入而在另一端删除*顺序存储struct QNode {ElementType Data[MAXSIZE]; / 存储元素的数组 /int front; / 队列的头指针 /int rear; / 队列的尾指针 /};typedef struct QNode Queue;循环队列,为防止队列为空和队列已满不好区分,只需允许队列存放n-1个数,front指针指向第一个元素的前一个位置,尾指针指向最后一个元素建队原创 2021-08-21 11:33:48 · 227 阅读 · 0 评论