数据结构与算法(C语言)
文章平均质量分 95
学习完 C 和 C++,阅读更加哦
程序喵正在路上
计科学生,新星计划第三季Python赛道Top4
展开
-
【数据结构与算法】散列查找
散列表(Hash TableHash \ TableHash Table),又称哈希表,是一种数据结构,特点是:数据元素的关键字与其存储地址直接相关那么我们如何建立 “关键字” 与 “存储地址” 之间的联系呢?—— 通过 “散列函数”(哈希函数):Addr=H(key)Addr = H(key)Addr=H(key)若不同的关键字通过散列函数映射到同一个值,则称它们为 “同义词”;通过散列函数确定的位置已经存放了其他元素,则称这种情况为 “冲突”那我们怎么解决 “冲突” 呢?—— 用拉链法(又称链接法、原创 2022-12-08 08:00:00 · 1151 阅读 · 1 评论 -
【数据结构与算法】B树与B+树
B 树,又称为多路平衡查找树,BB 树中所有结点的孩子个数的最大值称为 BB 树的阶,通常用 mm 表示,上图即为 55 阶 BB 树。一棵 mm 阶 BB 树或为空树,或为满足如下特性的 mm 叉树:树中每个结点至多有 mm 棵子树,即至多含有 m - 1m−1 个关键字若根结点不是终端结点,则至少有两棵子树除根结点外的所有非叶结点至少有 \lceil m/2 \rceil⌈m/2⌉ 棵子树,即至少含有 \lceil m/2 \rceil - 1⌈m/2⌉−1 个关键字所有的叶结点都出现在原创 2022-12-06 09:35:16 · 979 阅读 · 0 评论 -
【数据结构与算法】线性表的查找
查找 —— 在数据集合中寻找满足某种条件的数据元素的过程称为查找查找表(查找结构) —— 用于查找的数据集合称为查找表,它由同一类型的数据元素(或记录)组成关键字 —— 数据元素中唯一识别该元素的某个数据项的值,使用基于关键字的查找,查找结果应该是唯一的只需进行操作 111 的为静态查找表,我们只关注查找速度即可;两种操作都要进行的为动态查找表,除了查找速度,我们也要关注插入或删除操作是否方便实现查找长度 —— 在查找运算中,需要对比关键字的次数称为查找长度平均查找长度(ASL,Average Search原创 2022-12-05 17:24:47 · 563 阅读 · 0 评论 -
【数据结构与算法】拓扑排序与关键路径
如果一个有向图中不存在环,则称之为有向无环图,简称DAG图(DirectedAcyclicGraph),比如下面这个图。原创 2022-12-04 11:54:18 · 1216 阅读 · 0 评论 -
【数据结构与算法】最小生成树与最短路径
连通图的生成树是包含图中全部顶点的一个极小连通子图(边尽可能少,但要保持连通)若图中顶点数为 $n$,则它的生成树有 $n - 1$ 条边。对生成树而言,若砍去它的一条边,则会变成非连通图,若加上一条边则会形成一个回路原创 2022-11-21 16:05:23 · 1434 阅读 · 0 评论 -
【数据结构与算法】BFS 和 DFS
🔥 本文由程序喵正在路上原创,CSDN首发!💖 系列专栏:数据结构与算法🌠 首发时间:2022年11月16日🌟 一以贯之的努力 不得懈怠的人生。原创 2022-11-16 12:11:21 · 1066 阅读 · 0 评论 -
【数据结构与算法】图的存储
介绍图的 4 中存储方式:邻接矩阵、邻接表、十字链表和多重链表原创 2022-11-13 17:08:23 · 885 阅读 · 0 评论 -
【数据结构与算法】图的基本概念
图GGG由顶点集VVV和边集EEE组成,记为G=(V,E)G=(V, E)G=(V,E),其中V(G)V(G)V(G)表示图GGG中顶点的有限非空集;E(G)E(G)E(G)表示图GGG中顶点之间的关系(边)集合。若V={v1,v2,...,vn}V={v1,v2,...,vn},则用∣V∣|V|∣V∣表示图GGG中顶点的个数,也称为图G。原创 2022-11-08 21:18:23 · 686 阅读 · 0 评论 -
【数据结构与算法】二叉排序树&平衡二叉树&哈夫曼树
二叉排序树,又称为二叉查找树(BSTBSTBST,BinarySearchTreeTreeBinarySearchTree)左子树上所有结点的关键字均小于根结点的关键字右子树上所有结点的关键字均大于根结点的关键字左子树和右子树又各是一棵二叉排序树我们可以发现,左子树结点值 < 根结点值 < 右子树结点值;同时,如果我们对一棵二叉排序树进行中序遍历,就可以得到一个递增的有序序列平衡二叉树(BalancedBi。原创 2022-11-07 10:09:38 · 702 阅读 · 0 评论 -
【数据结构与算法】二叉树的遍历和线索二叉树
🔥 本文由程序喵正在路上原创,CSDN首发!💖 系列专栏:数据结构与算法🌠 首发时间:2022年10月30日🌟 一以贯之的努力 不得懈怠的人生。原创 2022-10-30 21:59:44 · 424 阅读 · 1 评论 -
【数据结构与算法】初识树和二叉树
🔥 本文由程序喵正在路上原创,CSDN首发!💖 系列专栏:数据结构与算法🌠 首发时间:2022年10月28日🌟 一以贯之的努力 不得懈怠的人生。原创 2022-10-28 16:56:12 · 676 阅读 · 0 评论 -
【数据结构与算法】栈和队列
线性表是具有相同数据类型的 n (n≥0) 个数据元素的有限序列,其中 n 为表长,当 n=0 时线性表是一个空表。若用 L 命名线性表,则其一般表示为L = (a1, … , ai-1, ai, ai+1, … , an)栈(Stack)是只允许在一端进行插入或删除操作的线性表,没有存放数据的栈称为空栈,栈顶允许插入和删除,栈底不允许插入和删除原创 2022-09-28 07:00:00 · 837 阅读 · 24 评论 -
【数据结构与算法】双链表&循环链表&静态链表
单链表:各个结点在内存中星罗棋布、散落天涯静态链表:分配一整片连续的内存空间,各个结点集中安置,0号结点充当 “头结点”,下一个结点的数组下标(也称为游标)充当 “指针”,游标为-1时表示已经到达表尾静态链表是用数组的方式来实现的链表,其优点为 —— 增、删操作不需要大量移动元素;缺点为 —— 不能随机存取,只能从头结点开始依次往后查找;容量固定不可变# define MaxSize 10 //静态链表的最大长度 struct Node {//存储数据元素 int next;原创 2022-09-27 07:00:00 · 866 阅读 · 0 评论 -
【数据结构与算法】单链表的查找和建立
单链表的按位查找、按值查找、尾插法和头插法原创 2022-09-22 07:00:00 · 937 阅读 · 1 评论 -
【数据结构与算法】单链表的插入和删除
众所周知,顺序表中的每个结点中只存放数据元素,其优缺点为:优点:可随机存取,存储密度高;缺点:要求大片连续空间,改变容量不方便。而单链表中的每个结点除了存放数据元素外,还要存储指向下一个节点的指针,其优缺点为:优点:不要求大片连续空间,改变容量方便缺点:不可随机存取,要耗费一定空间存放指针原创 2022-09-21 15:56:04 · 11173 阅读 · 0 评论 -
【数据结构与算法】顺序表的基本操作实现
🔥 本文由程序喵正在路上原创,CSDN首发!💖 系列专栏:数据结构与算法🌠 首发时间:2022年9月19日🌟 一以贯之的努力 不得懈怠的人生。原创 2022-09-19 21:57:40 · 3389 阅读 · 23 评论 -
【数据结构与算法】顺序表的定义及初步实现
顺序表 —— 用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现线性表是具有相同数据类型的n(n≥0) 个数据元素的有限序列,数据类型相同说明每个数据元素所占的空间是一样大的我们假设线性表第一个元素的存放位置(即首地址)是LOC(L),LOC是location的缩写,那么第二个元素的存放位置就是LOC(L)+数据元素的大小,第三个元素的存放位置就是LOC(L)+2*数据元素的大小,依此类推…原创 2022-09-18 22:14:57 · 1134 阅读 · 2 评论 -
【数据结构与算法】线性表的定义和基本操作
线性表,通俗来讲,就像我们去食堂排队打饭一样,它具有线一样性质的结构线性表(List):由零个或多个数据元素组成的有限序列首先它是一个序列,也就是说元素之间是有顺序的,按先来后到排序如果元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都有且只有一个前驱和后继另外,线性表强调是有限的,事实上无论计算机发展到多强大,它所处理的元素都是有限的如果用数学语言来进行定义,可如下:若将线性表记为(a1, … , ai-1, ai, ai+1, … , an),则表中a。原创 2022-09-18 13:32:52 · 751 阅读 · 0 评论 -
【数据结构与算法】时间复杂度和空间复杂度
我们如何判断一个算法的好坏?我们如何比较不同算法?原创 2022-09-16 22:37:33 · 633 阅读 · 0 评论 -
【数据结构与算法】链表
数组和链表是所有数据结构的基础,链表是很重要的两种线性结构之一链表可以分为单链表、双链表、循环单链表、循环双链表四种,每一种又可以分为有头和无头两种单链表就是相邻两个节点之间只有一个指针连接,而有头单链表就是第一个节点(也就是头节点)不存储数据,后面才存储数据的链表,无头单链表就是头节点存储有数据请注意:实际运用中,有头链表是不用的至于循环单链表和循环双链表,区别就在于循环链表的尾节点会指向第一个节点。原创 2022-09-01 22:23:57 · 3376 阅读 · 4 评论 -
【数据结构与算法】顺序表&手撕vector
顺序表就是数组,但是,数组的大小是固定的。一般我们说动态数组,说的就是顺序表了。而线性表,分为动态数组和链表两种原创 2022-08-26 22:16:02 · 305 阅读 · 0 评论