
数据结构与算法
文章平均质量分 82
数据结构与算法
咖喱年糕
欢迎大家,和我一起探讨学术上的知识,一起学习一起进步!
展开
-
按位运算符、逻辑运算符
操作的基本形式是使用一个掩码,其中掩码的每个位都是希望设置为 1 的位,其余位设为 0。操作的基本形式是使用一个掩码,其中掩码的每个位都是希望保留的位,其余位设为 0。“条件非” 表达式的含义是,当给定的条件为假(False)时,整个表达式的结果为真(True),反之亦然。“条件或” 表达式的含义是,当至少一个条件为真(True)时,整个表达式的结果就为真。):将一个数的二进制表示向右移动指定的位数,左侧空出的位用原先最高位的值填充(有符号数用符号位填充,无符号数用 0 填充)。原创 2023-11-15 19:42:25 · 764 阅读 · 0 评论 -
【单链表反转】图文解析 链表反转
例题描述思路代码实现例题描述反转一个链表示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL原创 2024-02-19 09:22:29 · 1322 阅读 · 0 评论 -
【排序算法】八大排序算法(C语言实现)
绝对映射:count数组中下标为i的位置记录的是arr数组中数字i出现的次数。相对映射:count数组中下标为i的位置记录的是arr数组中数字min+i出现的次数。注:计数排序只适用于数据范围较集中的序列的排序,若待排序列的数据较分散,则会造成空间浪费,并且计数排序只适用于整型排序,不适用与浮点型排序。原创 2024-02-17 09:40:35 · 848 阅读 · 0 评论 -
【排序算法】C语言排序(桶排序,冒泡排序,选择排序,插入排序,快速排序)
什么是排序?1、桶排序2、冒泡排序3、选择排序4、插入排序5、快速排序原创 2024-02-17 08:04:29 · 893 阅读 · 0 评论 -
【数据结构】无向图创建邻接表以及深度遍历、广度遍历(C语言版)
100//深度遍历标记数组//广度遍历标记数组// 边链表int Local;// 存放该顶点对应边链表中数据// 边链表节点指针// 顶点表int Vertex;// 存放一条边链表对应的顶点// 指向该顶点对应边链表的头节点// 存放顶点和边,指向顶点表结构体数组int Vnum;// 存放顶点数int Enum;// 存放边数// 边链表对应的顶点表中顶点结构体}MyGraph;原创 2024-02-16 15:06:07 · 3614 阅读 · 4 评论 -
【数据结构】无向图创建邻接矩阵、深度优先遍历和广度优先遍历(C语言版)
假设图G由两个集合V和E组成,记为G={V , E}。其中V是顶点的有限集合,E是连接V中两个不同顶点的边的有限集合。如果E中的顶点对是有序的,即E中的每条边都是有方向的,则称G是有向图。如果顶点对是无序的,则称G是无向图。注意:这里存入数据时,坐标点以原点(0,0)为起点开始!基本每一步都有注释,详细观看,建议画图理解。定义的结构体、数组可看上面代码。原创 2024-02-16 13:29:28 · 2318 阅读 · 0 评论 -
【数据结构】计算节点个数和二叉树高度(C语言版)
计算双分支节点思路 和 计算单支点相反 为: 遍历 二叉树 只记录 节点指针指向的节点中 左右子树都存在 的时候,递归返回值+1,累加最后返回 就是双分支节点的个数。遍历二叉树途中,只记录遍历树节点中遇到(左边子树存在,右边子树为NULL )或者 (右边子树存在,左边子树为NULL)这种节点,才让递归 返回值 +1,依次累加。让根节点指针开始,进行二叉树的遍历,遍历树节点中不为NULL下,及存在节点,遍历次数相加之和 + 根节点 及为总节点。原创 2024-02-14 19:22:26 · 704 阅读 · 0 评论 -
【数据结构】二叉树根节点到特定节点路径(C语言版)
使用二叉链表创建的二叉树,这里我的思路是用链栈来存放找寻二叉树特定节点中,用来存放节点元素。flag = 1,作为标记符,表示还没在一条路径中,找到要找的特定节点元素。思路理解不了,可以结合运行结果图,加上自己画图理解,运行结果在最下方。L 为一开始创建的链栈头指针。原创 2024-02-14 03:53:56 · 981 阅读 · 0 评论 -
【数据结构】二叉树先序、中序、后序及层次四种遍历(C语言版)
先序遍历结果为:A B D H I E J C F K G 动画演示: 中遍历结果为:H D I B E J A F K C G 动画展示:后序遍历中,根节点默认最后面后序遍历结果:H I D J E B K F G C A 动画展示: 层次遍历结果:A B C D E F G H I J K解释外圈跑的意思:这里的根,指的是每个分叉子树(左右子树的根节点)根节点,并不只是最开始头顶的根节点,需要灵活思考理解,建议画图理解!!原创 2024-02-13 18:26:48 · 1851 阅读 · 0 评论 -
【数据结构】二叉链表创建二叉树(C语言版)
第一步先创建根节点,然后创建根节点左子树,开始递归创建左子树,直到递归创建到的节点下不继续创建左子树,也就是当下递归到的节点下的左子树指向NULL,结束本次左子树递归,返回这个节点的上一个节点,开始创建右子树,然后又开始以当下这个节点,继续递归创建左子树,左子树递归创建完,就递归创建右子树,直到递归结束返回到上一级指针节点(也就是根节点下),此时根节点左边子树创建完毕,开始创建右边子树,原理和根节点左边创建左右子树相同。二叉树的操作通常使用递归方法,如果递归不太明白,建议去对此进行一下学习和练习。原创 2024-02-12 09:58:30 · 2214 阅读 · 1 评论 -
【数据结构】顺序栈和链式栈的简单实现和解析(C语言版)
堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象数据类型,只允许在有序的线性数据集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。用数组实现栈,就是将数组的增、删操作限制在头部或者尾部,即只能在数组的一端操作元素,就成了顺序栈。本篇所讲解的栈和队列属于逻辑结构上的划分。逻辑结构分为线性结构、非线性结构。原创 2024-02-12 09:36:18 · 1148 阅读 · 0 评论 -
【数据结构】链式队列解析(C语言版)
在顺序队列中,通常让队尾指针rear指向刚进队的元素的位置,让队首指针 front 指向刚出队的元素的位置。这样经过一系列的操作后,两个指针最终会到达数组的末端处,虽然队中已没有了元素,但是仍然无法插入元素,这就是所谓的“假溢出”。与栈(stack)不同的是,队列是FIFO(First In First Out,先进先出),进入队列的一端叫尾部(rear),出队列的一端叫头部(front)。从图中可以看出,出队的顺序是A->B->C,也就是入队的顺序,即说明了队列是遵循FIFO的。4)下班: 退出运行。原创 2024-02-11 19:24:00 · 950 阅读 · 0 评论 -
【数据结构】八大数据结构分类
哈希表在应用中也是比较常见的,就如Java中有些集合类就是借鉴了哈希原理构造的,例如HashMap,HashTable等,利用hash表的优势,对于集合的查找元素时非常方便的,然而,因为哈希表是基于数组衍生的数据结构,在添加删除元素方面是比较慢的,所以很多时候需要用到一种数组链表来做,也就是拉链法。二叉树是一种比较有用的折中方案,它添加,删除元素都很快,并且在查找方面也有很多的算法优化,所以,二叉树既有链表的好处,也有数组的好处,是两者的优化方案,在处理大批量的动态数据方面非常有用。原创 2024-02-11 19:23:35 · 1044 阅读 · 0 评论