
数据结构复盘(C语言)
对学过的数据结构的知识进行复盘,可以登录查看,加深自己的理解。代码大部分是经过自己敲的,听的课是来自B站的up主青空の霞光,如有任何问题,欢迎大家指正
WWBQU
这个作者很懒,什么都没留下…
展开
-
六种常见排序
而双轴快速排序(Dual-Pivot QuickSort)则是在标准快速排序的基础上进行优化,它通过使用两个基准元素来实现更高效的排序。是一种基础的排序算法,其核心思想是通过重复交换相邻元素的位置,使得最大的元素逐渐“冒泡”到数组的末端。尽管它的时间复杂度较高,通常为 O(n^2),但由于其简单直观,仍然是学习排序算法时常用的一个例子。它的基本思想是通过逐步插入元素到已排序的子序列中,从而实现排序。插入排序的时间复杂度为 O(n²),在元素个数较少时,插入排序通常表现得较好,且实现非常简单。原创 2024-11-11 00:09:51 · 154 阅读 · 0 评论 -
Floyd 算法计算最短路径
【代码】Floyd 算法计算最短路径。原创 2024-11-10 23:58:05 · 168 阅读 · 0 评论 -
深度讲解邻接表图结构与广度优先搜索(BFS)
使用队列来存储待处理的顶点,从起始顶点开始进行广度优先搜索。每次访问队列中的顶点,打印出该顶点的值,并将未访问过的邻接顶点加入队列。,标记每个顶点是否被访问过。广度优先搜索(BFS)原创 2024-11-10 23:56:08 · 325 阅读 · 0 评论 -
深入理解邻接表和深度优先搜索(DFS)算法
函数通过递归访问每个顶点,并打印访问的顶点。如果当前顶点没有连接到目标顶点,则继续递归地访问它的邻接节点。函数的参数包括图、起始顶点、目标顶点和访问数组。来标记已经访问过的顶点,避免重复访问。如果当前顶点是目标顶点,函数返回成功。DFS 是一种用于遍历图的算法。深度优先搜索(DFS)原创 2024-11-10 23:52:38 · 243 阅读 · 0 评论 -
实现邻接表的图结构
在计算机科学中,图是一种重要的抽象数据结构,广泛应用于各种领域,如社交网络分析、路由算法等。有两种常见的图的表示方式:邻接矩阵和邻接表。本文主要讲解如何通过邻接表来表示一个图。(Vertex)和连接顶点的。原创 2024-11-10 23:49:57 · 231 阅读 · 0 评论 -
邻接矩阵表示图结构
【代码】邻接矩阵表示图结构。原创 2024-11-10 23:47:48 · 101 阅读 · 0 评论 -
基于链表的哈希表实现
使用链表解决哈希冲突问题,即多个元素通过链表存储在同一个哈希桶中。原创 2024-11-10 23:46:23 · 142 阅读 · 0 评论 -
哈希表:链地址法与开放定址法
哈希表(Hash Table)是一种用于存储键值对的数据结构,能够在常数时间内进行插入、删除和查找操作。哈希表的基本思想是通过一个哈希函数将键映射到表中的一个位置,避免了线性查找的高时间复杂度。原创 2024-11-10 23:44:23 · 124 阅读 · 0 评论 -
二叉搜索树(BST)实现与操作
二叉搜索树(Binary Search Tree, 简称BST)。二叉搜索树是一种树形数据结构,它的每个节点最多有两个子节点,且左子树上的所有节点的值小于父节点的值,右子树上的所有节点的值大于父节点的值。这使得二叉搜索树具有很好的搜索、插入和删除操作效率。原创 2024-11-09 23:40:19 · 167 阅读 · 0 评论 -
实现最大堆
最大堆通常用于实现优先队列,因为它能在 O(log n) 时间复杂度内支持插入和删除最大元素的操作。原创 2024-11-09 23:46:48 · 228 阅读 · 0 评论 -
Huffman 编码实现
Huffman 编码是一种广泛应用于数据压缩的算法,通过构建一棵最优二叉树(Huffman 树),以最短的二进制代码表示出现频率较高的字符,从而实现数据的有效压缩。原创 2024-11-09 23:44:53 · 179 阅读 · 0 评论 -
平衡二叉树(AVL)树的实现
AVL 树的插入操作、树的平衡及相关的旋转操作。原创 2024-11-09 23:42:47 · 173 阅读 · 0 评论 -
队列实现层序遍历
层次遍历也叫做广度优先遍历(BFS),它按照从上到下、从左到右的顺序遍历二叉树中的所有节点。为了实现这一功能,我们将利用**队列(Queue)**这一数据结构。队列的特点是先进先出(FIFO),非常适合用于层次遍历,因为我们需要按层逐层处理节点。原创 2024-11-09 23:36:59 · 236 阅读 · 0 评论 -
栈迭代实现二叉树的先序和中序遍历
【代码】栈迭代实现二叉树的先序和中序遍历。原创 2024-11-09 23:35:08 · 117 阅读 · 0 评论 -
树的三种遍历
【代码】树的三种遍历。原创 2024-11-09 23:26:06 · 102 阅读 · 0 评论 -
基于链表结构的队列
链表队列使用链表节点动态分配内存,可以存储任意数量的元素,直到系统内存耗尽。该代码定义了链表节点和队列的结构,以及基本的队列操作。原创 2024-11-09 23:20:43 · 194 阅读 · 0 评论 -
基于数组的循环队列
【代码】基于数组的循环队列。原创 2024-11-09 23:18:33 · 131 阅读 · 0 评论 -
顺序表C语言
由于 ArrayList 是指向 struct List 的指针,因此 list 是一个指针,指向 struct List 类型的数据。realloc扩容返回一个指向新的内存块的指针(void* realloc(void* ptr, size_t new_size);) ptr指向已分配内存块的指针,size_t new_size新的内存大小。malloc扩容返回指向分配内存块的指针(void* malloc(size_t size);)void*返回指针,size_t size:要分配的内存大小。原创 2024-11-05 23:15:36 · 281 阅读 · 0 评论 -
单链表C语言
【代码】数据结构--单链表。原创 2024-11-05 23:26:17 · 152 阅读 · 0 评论 -
双指针链表C语言
【代码】数据结构复盘--双链表。原创 2024-11-05 23:28:43 · 209 阅读 · 0 评论 -
顺序表实现栈
栈顶元素的下标。栈顶元素的下标值始终指向栈中最新的元素,初始化为 -1,表示栈为空。: 当前栈的容量,表示栈可以容纳的最大元素个数。初始化为 10,并会根据需要扩展。: 在栈满时,创建一个新的更大的数组,并将原数组的元素复制到新数组中。: 指向栈存储数据的动态数组。栈中的每个元素都会存储在这个数组中。: 栈扩容后的新容量,通常是当前容量的两倍。: 栈中元素的类型,在本例中是。,可以根据需要修改为其他类型。原创 2024-11-05 23:31:04 · 276 阅读 · 0 评论 -
链表实现栈
【代码】数据结构复盘--链表实现栈。原创 2024-11-05 23:32:57 · 344 阅读 · 0 评论