自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 【算法】(BFS/DFS)迷宫路径问题(C语言)

题目:现有一迷宫如下图所示,蓝色部分为墙壁,白色部分为通路,入口在左上角(1,1)处,出口在右下角(8,8)处,试找出一条路径以通过该迷宫(路径不能重叠)。

2022-05-01 13:26:16 7102 9

原创 【嵌入式开发】基于树莓派实现超声波避障小车(Python)

基于树莓派实现小车的驱动行驶与超声波自主测距避障(附完整代码)

2022-03-30 23:24:15 7047 16

原创 【数据结构】基于树的查找法——B树(C语言)

一棵B树是一棵平衡的m路查找树,它或者是空树,或者是满足如下性质的树:① 树中每个结点最多有m棵子树。② 根结点至少有两棵子树。③ 除根结点之外的所有非叶结点至少有⌈m/2⌉棵子树。④ 所有的叶结点出现在同一层上,并且不含信息,通常称为失败结点。失败结点为虚结点,在B树中并不存在,指向它们的指针为空指针。引入失败结点是为了便于分析B树的查找性能。

2022-03-22 23:51:04 2977

原创 【数据结构】基于树的查找法——平衡二叉排序树(C语言)

平衡二叉排序树又称AVL树。一棵平衡二叉排序树或者是空树,或者是具有下列性质的二叉排序树:① 左子树与右子树的高度之差的绝对值小于等于1;② 左子树和右子树也是平衡二叉排序树。

2022-03-13 23:35:19 3232 1

原创 【数据结构】基于树的查找法——二叉排序树(C语言)

二叉排序树又称二叉查找树,它是一种特殊的二叉树。其定义为:二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:① 若它的左子树非空,则左子树上所有结点的值均均小于根结点的值。② 若它的左子树非空,则左子树上所有结点的值均均大于(或大于等于)根结点的值。③ 它的左右子树也分别为二叉排序树。

2022-03-07 20:10:01 1994 1

原创 【算法】(Floyd算法)图的中心顶点问题(C语言)

题目: 某公司在某地区共有六个产品销售点,销售点间的距离如下图所示。现根据业务需要计划在其中某个销售点上建立一个中心仓库,负责向其它销售点提供产品。假设每天需要向每个销售点运输一次产品且每次运输只能供应一个销售点,那么将中心仓库建在何处才能保证运输总距离最短?求出最短运输距离。

2022-02-28 23:25:12 2752 1

原创 【数据结构】图的最短路径问题(Dijkstra算法、Floyd算法)(C语言)

设有带权的有向图D=(V,{E}),已知源点为v0,求v0到其它各顶点的最短路径。Dijkstra算法按照最短路径长度递增的顺序产生一点到其余各顶点的所有最短路径。对于图G=(V,{E})

2022-02-24 17:11:57 5557

原创 【数据结构】有向无环图(AOE-网)的关键路径(C语言)

把用顶点表示事件,用弧表示活动,弧的权值表示活动所需要的时间的有向无环图称为边表示活动的网,简称AOE-网。在AOE-网中存在唯一的、入度为0的顶点,称为源点;存在唯一的、出度为0的顶点,称为汇点。从源点到汇点的最长路径长度即为完成整个工程任务所需的时间,该路径称为关键路径。关键路径上的活动称为关键活动。

2022-02-21 20:05:19 3450

原创 【数据结构】有向无环图(AOV-网)的拓扑排序(C语言)

有向无环图是指一个无环的有向图。有向无环图可用来描述工程或系统的进行过程,如一个工程的施工图、学生课程间的制约关系图等。用顶点表示活动,用弧表示活动间优先关系的有向无环图,称为顶点表示活动的网,简称AOV-网。拓扑序列:在有向图G =(V,{E})中,V中顶点的线性序列(v1,v2,v3,…,vn)称为拓扑序列。

2022-02-20 17:42:26 4057 3

原创 【数据结构】图的最小生成树(普里姆Prim算法、克鲁斯卡尔Kruskal算法)(C语言)

一个连通图的生成树是指一个极小连通子图,它含有图中的全部顶点,但只有足以构成一棵树的 n-1 条边。在一个连通网的所有生成树中,各边代价之和最小的那棵生成树称为该连通网最小代价生成树(MST),简称为最小生成树。利用普里姆(Prim)算法和克鲁斯卡尔(Kruskal)算法可以生成一个连通网的最小代价生成树。

2022-02-19 00:14:20 5596

原创 【数据结构】图的遍历(深度优先搜索、广度优先搜索)及简单路径问题(C语言)

图的遍历就是从图中的某个顶点出发,按某种方法对图中所有顶点访问且仅访问一次。图的遍历算法是求解图的连通性问题、拓扑排序和关键路径等算法的基础。对于图的遍历,通常有两种方法,即深度优先搜索和广度优先搜索。这两种遍历方法对于无向图和有向图均适用。图的深度优先搜索和广度优先搜索结果均不唯一。

2022-02-17 17:48:59 10749 1

原创 【数据结构】图的存储结构(邻接矩阵、邻接表、十字链表、邻接多重表)及实现(C语言)

邻接矩阵、邻接表、十字链表、邻接多重表是图的四种常用存储结构。图的邻接矩阵表示法(Adjacency Matrix)也称作数组表示法。它采用两个数组来表示图:一个是用于存储顶点信息的一维数组,另一个是用于存储图中顶点之间关联关系的二维数组,这个关联关系数组被称为邻接矩阵。有向图的邻接矩阵可以指示弧的方向;无向图的邻接矩阵没有方向,所以是对称矩阵;稀疏图不适于用邻接矩阵来存储,会造成空间浪费。1.2 采用邻接矩

2022-02-15 23:58:36 2654

原创 【数据结构】哈夫曼树及哈夫曼编码实现(C语言)

目录1. 哈夫曼树1.1 基本概念1.2 构造哈夫曼树1.3 哈夫曼树的类型定义1.4 哈夫曼树创建的算法实现2. 哈夫曼编码实现2.1 哈夫曼编码2.2 完整代码2.3 运行结果1. 哈夫曼树1.1 基本概念路径:指从根结点到该结点的分支序列。路径长度:指根结点到该结点所经过的分支数目。结点的带权路径长度:从树根到某一结点的路径长度与该结点的权的乘积。树的带权路径长度(WPL):树中从根到所有叶子结点的各个带权路径长度之和。哈夫曼树是由 n 个带权叶子结点构成的所有二叉树中带权路径长度最短的

2022-02-12 14:05:37 63742 25

原创 【数据结构】二叉树的线索化及遍历(C语言)

目录1. 线索二叉树的概念及结构2. 二叉树的线索化(以中序线索树为例)3. 线索二叉树的遍历(以中序线索树为例)4. 中序线索树完整实现代码5. 运行结果1. 线索二叉树的概念及结构在有 n 个结点的二叉链表中共有 2n 个链域,但只有 n-1 个有用的非空链域,其余 n+1 个链域是空的。可以利用这空闲的 n+1 个空链域来存放遍历过程中结点的前驱和后继信息。现规定:若结点有左子树,则其 LChild 域指向其左孩子,否则 LChild 域指向其前驱结点;若节点有右子树,则其 RChild 域指向

2022-02-10 13:13:08 1559 1

原创 【数据结构】基于栈的二叉树先/中/后序非递归遍历(C语言)

目录1. 直接实现栈操作方法1.1 先序遍历1.2 中序遍历1.3 后序遍历1.4 完整实现代码1.5 运行结果2. 调用栈操作的函数方法2.1 先序遍历2.2 中序遍历2.3 后序遍历2.4 完整实现代码2.5 运行结果二叉树的递归遍历:https://blog.csdn.net/weixin_51450101/article/details/122742243?spm=1001.2014.3001.55011. 直接实现栈操作方法1.1 先序遍历/*先序遍历二叉树的非递归算法(直接实现栈操作)*

2022-02-07 20:43:01 2670

原创 【数据结构】二叉树的存储结构及先/中/后序递归遍历算法(C语言)

目录1. 树与二叉树1.1 树的基本概念1.2 二叉树的基本概念2. 二叉树的存储结构及遍历算法2.1 二叉树的存储结构2.2 二叉树的前中后序遍历2.3 遍历算法的应用2.4 完整实现代码2.5 运行结果3. 遍历算法基于栈的递归消除1. 树与二叉树1.1 树的基本概念树是 n(n>=0)个结点的有限集合 T。当 n = 0 时,称为空树;当 n>0 时,该集合满足:① 其中必有一个称为根(root)的特定结点,它没有直接前驱,但有零个或多个直接后驱。② 其余 n-1 个结点可以划分

2022-02-03 21:52:28 4315 2

原创 【数据结构】广义表的存储结构及基本运算(C语言)

目录1. 广义表基本概念2. 广义表的存储结构2.1 头尾链表存储结构2.2 同层结点链存储结构3. 广义表的基本运算3.1 求表头、表尾3.2 求长度、深度3.3 统计原子数目3.4 广义表的复制1. 广义表基本概念广义表是n个数据元素(d1,d2,d3,…,dn)的有限序列,di 既可以是单个元素,也可以是一个广义表。通常记作GL =(d1,d2,d3,…,dn),n是广义表长度。若其中 di 是一个广义表,则称 di 是广义表GL的子表。在广义表GL中,d1是广义表表头,其余部分组成的表称为广义表

2022-01-28 20:49:33 6318 2

原创 【数据结构】稀疏矩阵的压缩存储(三元组表、十字链表)(C语言)

目录1. 三元组表1.1 三元组表的存储结构1.2 基于三元组表的矩阵转置1.3 完整实现代码1.4 运行结果2. 十字链表2.1 十字链表的存储结构稀疏矩阵是指矩阵中大多数元素为零的矩阵。从直观上讲,当非零元素个数低于总元素的30%时,这样的矩阵为稀疏矩阵。1. 三元组表1.1 三元组表的存储结构稀疏矩阵的三元组表表示法是指只存储非零元素,同时存储该非零元素在矩阵中所处的行号和列号的位置信息。为方便处理,将稀疏矩阵中非零元素对应的三元组按“行序为主序”的一维结构体数组进行存放,将矩阵的每一行(行

2022-01-27 22:50:03 12920 2

原创 【数据结构】串的简单模式匹配算法、KMP算法(C语言)

目录串的简单模式匹配算法简单模式匹配算法完整实现代码运行结果KMP算法串的简单模式匹配算法简单模式匹配 Brute-Force(布鲁斯-福斯)算法是一种带回溯的匹配算法,算法的基本思想是:从主串 s 的第一个字符开始,和模式串 t 的第一个字符开始比较,如果相等,就继续比较后续字符,如果不等,则回溯到主串 s 的第2个字符开始重新和模式串 t 比较,直到模式串 t 中的每一个字符和主串 s 中的一个连续字符子序列全部相等,则称匹配成功,返回和 t 中第一个字符相等的字符在主串 s 中的位置;或者主串中没

2022-01-26 22:01:43 5126

原创 【数据结构】串(定长顺序串、堆串、块链串)的存储结构及基本运算(C语言)

目录串的基本概念定长顺序串代码+注释运行结果堆串代码+注释运行结果块链串串的基本概念字符串(String)是由零个或多个字符组成的有限序列。记为 S = ‘a1a2…an’(n>0)其中,S是串的名字,用单引号括起来的字符序列是串的值,每个 ai(1<=i<=n)可以是字母、数字或其它字符。n是串中字符的个数,称为串的长度,n=0时的串称为空串。子串:串中任意个连续的字符组成的子序列称为该串的子串。主串:包含子串的串称为主串。子串在主串中的位置:通常将字符在串中的序号称为该字符

2022-01-24 19:12:01 4185 1

原创 【数据结构】队列(链队列、循环队列)的存储结构及基本运算(C语言)

目录1. 队列基本概念2. 链队列代码+注释运行结果3. 循环队列代码+注释运行结果1. 队列基本概念队列(Queue)是一种限定性线性表,它只允许在表的一端插入元素,而在另一端删除元素,具有先进先出的特点。在队列中,允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。队列有顺序和链式两种存储表示。2. 链队列链队列采用带头结点的链表结构,并设置一个队头指针 front 和一个队尾指针 rear ,队头指针始终指向头结点,队尾指针指向最后一个元素。空的链队列的队头指针和队尾指

2022-01-22 21:41:56 9424 3

原创 【数据结构】基于栈的括号匹配算法(C语言)

题目: 设表达式中包含三种括号:圆括号、方括号和花括号,它们可互相嵌套,如 ([{}]) 或 ({[][()]}) 等均为正确的格式,而 {[]})} 、{[() ]或 ([]} 均为不正确的格式。利用栈的结构编写程序检验输入的括号表达式是否匹配。思路: 利用栈“后进先出”的特点,每次读入一个括号:(1)左括号:直接入栈等待匹配;(2)右括号:①栈为空说明没有与该右括号匹配的左括号,则该右括号多余;②栈不为空则将该右括号与栈顶括号比较,若匹配则将栈顶元素出栈,若不匹配则说明左右括号类型不匹配。

2022-01-20 15:35:15 3845

原创 【数据结构】栈(顺序栈、双端栈、链栈)的存储结构及基本运算(C语言)

目录1. 栈的基本概念2. 顺序栈3. 双端顺序栈(两栈共享技术)4. 链栈1. 栈的基本概念栈是一种限定性线性表,是将线性表的插入和删除操作限制为仅在表的一端进行,通常将表中允许进行插入删除的一端称为栈顶(Top),因此栈顶的当前位置是动态变化的,它由一个称为栈顶指针的位置指示器来指示。表的另一端称为栈底(Bottom)。当栈中没有元素时称为空栈。栈的修改是按后进先出的原则,如元素以 a1,a2,a3,…,an 的顺序进栈,则出栈顺序为 an,…,a3,a2,a1 。每次进栈的元素的元素都被放在原

2022-01-17 12:05:57 2272

原创 【算法】回溯法——素数环问题(C语言)

题目: 把从1到n这n个数摆成一个环,要求相邻两个数的和是一个素数,求出所有解法。思路:用数组a模拟n个数组成的环。递归地填数:判断第 k 种可能是否合法,如果合法则填数;判断是否到达目标(n个数已填完),是则输出,不是则递归填下一个如果不合法则选择下一种可能;完整代码+注释# include<stdio.h># include<math.h>int a[20]; //用数组模拟n个数组成的环int check_1(int x, int i);

2022-01-15 16:05:27 4849 1

原创 【算法】回溯法——马的遍历问题(C语言)

题目: 在中国象棋中,马只能走“日” 字。现有一5*4棋盘,马从位置(x,y)处出发,把棋盘的每一格都走一次,且只走一次。找出所有路径。思路: 对于棋盘上一点A(x,y)有八个拓展方向,即A1(x+1,y+2)A2(x+2,y+1)A3(x+2,y-1)A4(x+1,y-2)A5(x-1,y-2)A6(x+2,y+1)A3(x+2,y-1)A4(x+1,y-2)完整代码运行结果...

2022-01-13 17:38:41 4094 2

原创 【数据结构】约瑟夫环(单向循环链表的应用)——C语言

题目:一堆猴子都有编号,编号是1,2,3 …m ,这群猴子(n个)按照1-m的顺序围坐一圈,从第1开始数,每数到第m个,该猴子就要离开此圈,这样依次下来,直到圈中只剩下最后一只猴子,则该猴子为大王。请设计算法编写程序输出为大王的猴子的编号。思路:建立单向循环链表,链表结点值对应猴子编号,对循环链表进行扫描,每计数到m时则删除该结点,直到链表中只剩下一个结点则停止,输出该结点值即为猴王编号。单向循环链表的存储结构及基本运算:https://blog.csdn.net/weixin_51450101/art

2021-12-10 15:31:57 2544 1

原创 【数据结构】线性表的链式存储(单向循环链表)及基本运算——C语言

循环链表是一个首尾相接的链表。将单链表最后一个结点的指针域由NULL改为指向表头结点,就得到了单链形式的循环链表,并称为循环单链表。

2021-12-10 14:46:40 2439

原创 【数据结构】线性表的链式存储(单链表)及基本运算——C语言

链式存储是最常用的动态存储方法,通常将采用链式存储结构的线性表称为线性链表。从链接方式看,链表可分为单链表、循环链表和双链表。从实现角度看,链表可分为动态链表和静态链表。链表用一组任意的存储单元来存放线性表的结点,链表中结点的逻辑顺序和物理顺序不一定相同,为了正确表示结点间的逻辑关系,必须在存储线性表的每个数据元素值的同时,存储指示其后继结点的地址(或位置)。这两部分信息组成的存储映像称为结点(Node)。结点包括两个域:数据域用来存储结点的值,指针域用来存储数据元素的直接后继的地址(或位置)。线性表

2021-12-06 20:51:29 3796 2

原创 【数据结构】线性表的顺序存储(顺序表)及基本运算——C语言

线性表的顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个元素,使得线性表中在逻辑结构上相邻的数据元素存储在连续的物理存储单元中,即通过数据元素物理存储的连续性来反映数据元素之间逻辑上的相邻关系。采用顺序存储结构存储的线性表通常简称为顺序表。顺序表的基本运算操作包含顺序表初始化、创建、输出、求表长、按序号查找、按值查找、插入、删除、逆置、升序排序、升序合并等。完整代码/*线性表的顺序存储结构及基本操作包含顺序表初始化、创建、输出、求表长、按序号查找、按值查找、插入、删除、逆置、升序排序、升

2021-12-02 16:49:08 5215 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除