- 博客(300)
- 资源 (2)
- 收藏
- 关注
原创 数据结构——队列(十)
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(First In First Out)。入队:进行插入操作的一端称为队尾。出队:进行删除操作的一端称为队头。队列也是分为顺序队列和链式队列附上完整代码//队列 # include # include static i = 0;typedef struct QueueNode //对列结点的结构体 {
2023-02-04 21:34:04
97
原创 数据结构——栈(九)
栈是一种特殊的线性表,只允许在固定的一端进行插入和删除元素的操作。进行数据插入和删除操作的一端成为栈顶,另一端称为栈底。栈中的元素遵循后进先出(LIFO, Last In First Out)原则。1、栈的英文为(stack)2、栈是一个先进后出(FILO-First In Last Out)的有序列表。3、栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。
2023-02-01 23:52:44
78
原创 数据结构——双向循环链表(八)
双向循环链表用的次数是最多的,下面我们看一下双向循环链表的增删改查。双向循环链表和其他链表差不多,重点还是要掌握他的原理,以及单链表的熟练使用。
2023-01-31 16:40:37
80
原创 数据结构——双向链表(七)
双向链表与单链表类似,直接在单链表的代码基础上进行修改就行(初始化、插入、删除)//双向链表 # include typedef int DataType;DataType a;} ListNode;//初始化 int BuyListNode(ListNode * * h) {return 1;//把指针移动到要插入位置的前一个位置 ListNode * q = h;//q等于头指针 int k = 1;
2023-01-31 11:26:06
49
原创 数据结构——链表(六)
学习关于链表剩下的知识附上全部代码//链表 # include typedef int DataType;DataType a;} ListNode;//初始化 int BuyListNode(ListNode * * h) {return 1;//把指针移动到要插入位置的前一个位置 ListNode * q = h;//q等于头指针 int k = 1;while(k < p && q) //防止位置P太大,程序挂掉 {
2023-01-31 10:17:10
52
原创 数据结构——链表(五)
接下来学习一下链表,链表比数组用的更多。概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑结构是通过链表中的指针链接实现的。什么意思呢,数组时连续的存储结构,知道一个就能找到下一个,链表不是,但是它又是线性的,是如何实现的呢单链表的结构:它将一块分成了两个区域,数据域和指针域,指针域用来存储下一个结点的地址。第一个节点叫头节点,一般不保存数据,第一个节点开始保存数据就是上图中的2有8种链表结构:(1)单向、双向(是否支持向前访问)
2023-01-30 16:39:11
288
原创 数据结构——顺序表(四)
实际应用中很少采用数据表,大都使用链表,链表可以很好的解决顺序表的缺点。//存储数据的数组(动态开辟) int size;//顺序表中当前有效数据的个数 int capacity;//顺序表中最大存储的个数 } SeqList;//初始化 int SeqListInit(SeqList * p) {assert(p);//用assert来防止传入空指针使程序崩掉 p -> a =(int *) malloc(sizeof(int) * N);//将指向动态开辟的数组置为NULL。
2023-01-30 11:07:23
56
原创 数据结构——顺序表(三)
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。我们知道数组里的数据是0,1,2,3,不可能出现0,1,2,4,没有3就没有4静态顺序表:使用定长数组存储元素。像通讯录第一次实现时定义了1000个。动态顺序表:使用动态开辟的数组存储。动态的通讯录我用DEV进行了简单的编写,规范的操作是编写源文件和.h文件代码如下//存储数据的数组(动态开辟) int size;//顺序表中当前有效数据的个数 int capacity;
2023-01-29 13:07:58
178
原创 数据结构——线性结构(二)
很早之前提到了数据结构,上一篇博客简单介绍了什么是线性结构,这篇博客简单做一个补充常见的数据结构可分为:线性结构、树形结构 和 图状结构。线性结构是一个有序数据元素的集合。常用的线性结构有:数组, 链表,栈 ,队列等。
2023-01-29 10:17:30
65
原创 STM32+ESP8266+机智云+DHT11数据上传
今天搞了一下机智云,就想把温湿度发到app上去,然后能够控制灯的开关。之前从来没有用过这个玩意,用阿里云和点灯科技多一点,听说这个机智云更方便。,相应的教程csdn上真的很多很多,我简单记录一下自己菜的坑,还有数据的上传发送。
2023-01-09 23:20:52
601
原创 Arduino通过NRF24L01实现双机无线通信
无线通信对于做各种项目来说都很加分,今天使用这个nrf模块进行无线通信。我原本是想用两个蓝牙的,但是蓝牙有个缺点,就是传输距离短,这个传输距离可以达到1000米。实现一对一发送就是上面这些步骤,实现双机互传也很简单,后续我用到的时候也会进行更新。
2023-01-05 12:13:23
319
原创 Arduino——GY39大气压、温湿度、光照模块
前几天买东西的时候买了一个GY39,这个模块集成了温湿度,大气压,海拔,光照一体,使用起来很方面。它有两种工作模式使用串口模式时需要搭配转接板,我选择了IIC模式,看一下通信协议吧,就是关于高八位和低八位的数据。看一下接线。
2023-01-05 11:12:01
167
原创 Arduino——野火GPS模块
手上还有一个GPS,用arduino做模块很方便,打算和短信模块结合,短信模块上次已经使用完成了,这次学习一下GPS模块看模块很容易知道,这个模块用的是串口通信,只需要注意设置相应的波特率即可,GPS模块的波特率是115200。使用的时候一定要注意,在室内是无法获取经纬度的,一定要去室外测试。下面看一下这个模块如何使用。
2023-01-05 11:01:19
240
原创 Arduino——正点原子sim800c模块
最近要做一个项目需要用到sim800c,就用arduino驱动一下吧,用的是正点原子的sim800c使用的时候最好使用12v1A供电,这样测试会很稳定有时候短信电话无法通讯和电源有很大关系。接线的使用STXD和RTXD,记得共个地,不然也会通讯不成功。
2023-01-05 10:48:27
228
原创 Arduino——PAJ7620手势识别模块
在用arduino驱动这些模块得时候,方法很简单,先去管理库中找这个库,如果有这个库,然后下载这个库,运行历程就行。
2023-01-05 10:40:37
233
原创 STM32使用红外测温
红外测温的原理可以直接去看卖家的手册,手册多余的话太多了,知道他是IIC通信的就行了,下面直接给出代码其实搞懂了IIC对于这种IIC通信的模块写代码很容易。
2023-01-04 22:34:41
776
2
原创 停车场寻车系统(识别车牌,手机app查询相关信息)
停车场寻车系统文章目录停车场寻车系统前言一、手机app二、车牌识别三、数据查询总结 停车场寻车系统 前言上个星期用了一周左右做了一个停车场寻车系统的项目,可以识别车牌,通过手机app查询车辆信息一、手机app手机app采用的依旧是点灯科技,通过物联网接入,这次更加深入了解了blinker的组件,就给车库加了查询功能。ESP8266代码:#define BLINKER
2022-11-26 09:57:55
507
2
原创 K210+MLX90614红外测温
K210随便找一个都行简单的红外测温就是这样,后续我打算结合口罩识别,用K210做一个上位机,搞一个口罩检测测温系统。
2022-11-19 21:57:21
480
3
原创 古月居机器视觉开发——ROS+opencv的图像处理方法(三)
这篇文章主要介绍opencv和ROS中的图像转换。详细的功能可以去古月居的课程里面去看,这里不过多的赘述。
2022-11-19 16:23:20
890
原创 最常用的排序——快速排序
虽然冒泡排序解决了桶排序的空间浪费问题,但是他在算法的执行效率上却牺牲了许多,快排是一个既不浪费空间又可以快速排序的方法。同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是,冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比它小的元素移动到数列的另一边,从而把数列拆解成了两个部分。这种方法和二分有点像他叫分治法看这个图你就明白了快速排序算法的平均时间复杂度是 O(nlogn)
2022-11-12 13:44:21
82
原创 邻居好说话——冒泡排序
先来看冒泡排序得基本思想:每次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。冒泡排序的原理是:每一趟只能确定将一个数归位,即每一趟只能确定将末位上的数归位,第二趟将倒数第二个数归位依次类推。让我们来看一个栗子:有8个数组成一个无序数列:5,8,6,3,9,2,1,7,希望从小到大排序。按照冒泡排序的思想,我们要把相邻的元素两两比较,根据大小来交换元素的位置,过程如下:首先让5和8比较,发现5比8要小,因此元素位置不变。接下来让8和6比较,发现8比6要大,所以8和6交换位置。
2022-11-11 23:14:49
2412
原创 最快最简单的排序——桶排序
这两页是从啊哈算法这本书拍的,说的很明确,桶排序就是有一些可以承载一个或多个元素的桶,将这些元素对号入座放在指定的桶里,然后遍历这些桶。可能这么说不是很好理解,看一段代码//创建10个桶 for(i = 0;i
2022-11-11 16:02:00
99
原创 Linux开发——shell开发 test命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
2022-11-03 23:16:42
104
原创 Linux开发——Shell 基本运算符
Shell 和其他编程语言一样,支持多种运算符,包括:算数运算符关系运算符布尔运算符字符串运算符文件测试运算符expr 是一款表达式计算工具,使用它能完成表达式的求值操作。#!echo "两数之和为 : $val"两点注意:表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2。完整的表达式要被包含,注意这个字符不是常用的单引号,在 Esc 键下边。
2022-11-03 17:22:09
99
原创 Linux开发——Shell 传递参数
我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数。
2022-11-03 16:45:18
187
原创 Linux开发——shell脚本
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 脚本(shell script),是一种为 shell 编写的脚本程序。在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。数组名 =(值 1 值 2 . . . 值n)
2022-11-03 16:33:57
2532
原创 E4A安卓app制作——初识易安卓(一)
打开这个软件后,可以看到各种各样的组件,我们只需要拖动组件便可以进行编程。这个软件制作app确实简单好用。
2022-10-31 21:41:32
1695
原创 SPI、RS232、485、IIC通信协议详细总结
通信协议是每一个嵌入式工程师必备的技能。下面我们来了解一下通信协议。1、空闲状态当总线上的SDA和SCL两条信号线同时处于高电平,便是空闲状态,如上图所示,当我们不传输数据时,SDA和SCL被上拉电阻拉高,即进入空闲状态。2、起始信号当SCL为高期间,SDA由高到低跳变,便是总线的启动信号,只能由主机发起,且在空闲状态下才能启动该信号3、停止信号当SCL为高期间,SDA由低到高的跳变;便是总线的停止信号,表示数据已经完成传输,由下图所示4、传输数据格式。
2022-10-25 11:58:43
2091
1
原创 重学FreeRTOS操作系统之中断篇(二)
前面学习了任务的相关知识,现在学习一下中断的相关知识。我们先来了解中断中断由硬件产生,当中断产生后CPU就会中断当前的进程而去处理中断服务使用中断可以大大提高CPU的工作效率,如果不用中断将会采用轮询的方式,轮询的方式效率低下。
2022-10-23 14:44:59
637
原创 重学FreeRTOS操作系统之任务篇(一)
学习STM32的时候都是用来跑裸机,后面学习了操作系统摆脱了流水线的工作方式,采用实时执行的方式,现在已经大三了,本人打算毕业找工作,于是打算重学一遍操作系统,以备不时之需。早上睡醒重新看了一下任务的知识,简单写了一下,可以看出任务分为创建、删除、挂起、恢复四个过程。关于FreeRTOS中的任务大概也就这么多,第二遍学习的时候感觉还是不一样的。
2022-10-23 12:12:58
3084
1
原创 openmv识别健康ma
之前用V831做了健康码,手上有一个闲着的的openmv就想做个健康码识别看一看。openmv的效果还是不太好,打算继续探寻更好的方法。
2022-10-21 21:40:23
830
1
原创 什么是哈希表
关于哈希表,在找工作的时候会有许多面试官问,你知道哈希表的底层原理吗,然后就给我们问懵了。那么怎么理解哈希表呢?HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。对于HashMap,我们最常使用的是两个方法:Get 和 Put。
2022-10-12 21:33:49
4041
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人