- 博客(61)
- 资源 (9)
- 收藏
- 关注
原创 循环队列(出队、入队、判空、长度、遍历、取头)(数据结构与算法)
头尾相连:循环队列将队列的头部和尾部连接起来形成一个环状结构,当队列的尾部指针达到数组的最末尾时,它将会绕回到数组的开头。涉及到移动、赋值原队列参数的函数参数列表如front,rear,都最好别用&引用,否则会修改原队列中的地址和数值如:SqQueue &Q。这意味着在将变量传递给函数时,将创建该变量的一份副本,并在函数内部使用该副本。这意味着该函数将直接操作传递给它的变量,而不是创建该变量的副本。使用SqQueue Q作参数列表时,函数引入的只是一份副本,不会修改原队列中变量、指针的空间地址与数值。
2023-11-18 14:20:19 2247
原创 (C++)栈的顺序存储及实现(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
【代码】栈的顺序存储及实现(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
2023-11-16 16:41:32 919
原创 (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
链栈是运算受限的单链表、只能在链表头部进行操作 1.链表的头指针就是栈顶,链头为栈顶,链尾为栈底 2.栈的链式存储不需要附设头节点 3.基本不存在栈满的情况,不需要判断栈满,但要判空 4.空栈相当于头指针指向空 5.插入和删除仅在栈顶处执行 6.因为是动态分配空间,所以需要释放
2023-11-16 16:22:43 794
原创 栈的顺序存储实现(C语言)(数据结构与算法)
10//定义栈中元素的最大个数ElemType data[MaxSize] //静态数组存放栈中元素int top;//栈顶指针}SqStack;//初始化栈S.top = -1;//初始化栈顶指针//判断栈空if(S.top == 1) //栈空else //不空SqStack S;//声明一个顺序栈(分配空间)//.....后续操作......(增删改查)
2023-11-09 21:33:28 860
原创 静态链表的定义与基本操作(C语言版)(数据结构与算法)
由于静态链表没有指针来直接跳转到下一个节点,所以需要使用游标来遍历链表。在静态链表中如果要表示,这个结点是最后一个结点,游标的值可以设为 -1, 表示之后已经没有其他结点了。遍历静态链表,找到要插入位置的前一个节点。可以使用一个游标来遍历链表,初始时指向链表的头节点。将新节点的下一个节点指向前一个节点的下一个节点,然后将前一个节点的下一个节点指向新节点的位置。这是一个简单的线性查找算法,时间复杂度为O(n),其中n是链表中节点的数量。在静态链表的空闲位置上分配一个新节点,为新节点赋值。
2023-11-04 20:00:22 1988
原创 算法的基本概念(数据结构与算法)
数据结构提供了一组基本的操作来对数据进行存储、检索、插入、删除等操作,如查找、排序、插入、删除和修改等。数据结构是指数据元素之间的关系和组织方式,在计算机科学中被广泛应用于存储和操作数据的方法和技术。线性结构:数据元素之间存在一对一的关系,如数组、链表、栈和队列。非线性结构:数据元素之间存在一对多或多对多的关系,如树和图。链式存储结构:通过指针将数据元素连接在一起,如链表、树和图。顺序存储结构:使用一段连续的存储空间存储数据元素,如数组。数据元素是构成数据的基本单位,可以是数字、字符、记录等。
2023-11-04 16:42:57 177
原创 循环链表(单循环、双循环)(数据结构与算法)
循环单链表与普通单链表的主要区别在于,循环单链表的尾节点的指针不是指向 nullptr,而是指向头节点,形成一个闭环。这意味着,在循环单链表中,可以通过尾节点的指针重新回到头节点。循环双链表与普通双链表的主要区别在于,循环双链表既具有双向链表的前驱和后继关系,也具有循环遍历的能力。
2023-11-04 16:31:41 3148
原创 数据结构与算法超详细笔记(含代码分析)
2.1 顺序表的定义与实现2.2 顺序表的插入和删除2.3 顺序表的查找(按值、按位查找)3.1 单链表的插入与删除3.2 单链表的查找(按值、按位查找)3.2 单链表的建立(头插法、尾插法)持续更新中。
2023-11-04 10:16:51 170
原创 双链表详解(初始化、插入、删除、遍历)(数据结构与算法)
同时,删除节点后必须确保释放相应的内存空间,以防止内存泄漏问题的发生。11. 双链表相较于单链表需要额外存储指向前一个节点的指针,因此会在空间上占用更多的内存。7. 双链表的每个节点包含三个部分:数据域、指向前一个节点的指针和指向下一个节点的指针。在双链表中删除节点的操作相对比较复杂,因为我们需要维护前驱节点和后继节点之间的指针连接。在双链表中插入节点需要更新前驱节点和后继节点的指针连接,操作相对比较复杂。将 p 结点的next指针,指向q结点的后继结点。程序设计如下:注意修改指针时要注意顺序!
2023-11-04 09:23:43 3366 2
原创 单链表的建立(头插法、尾插法)(数据结构与算法)
如果要把很多个数据元素存到一个单链表中,如何操作?1.初始化一个单链表2. 每次取一个数据元素,插入到表尾/表头。
2023-11-03 19:35:58 6164
原创 单链表的查找(按值查找、按位查找)(数据结构与算法)
什么是单链表?单链表是一种常见的链式数据结构,用于存储和操作数据元素的集合。它由一系列的节点组成,每个节点包含两个部分:数据域和指针域。单链表的每个节点包含了存储数据的数据域,以及指向下一个节点的指针域。通过这些指针域,节点之间可以按顺序连接起来,形成一个链式结构。链表的最后一个节点通常指向一个特殊的空节点(NULL或nullptr),表示链表的结束。相比于数组,链表的一大优势是它的动态性。在链表中,节点的添加、删除可以通过修改指针的指向来完成,不需要像数组那样进行元素的移动。
2023-11-03 11:28:07 6332 4
原创 单链表的插入删除(数据结构与算法)
单链表是一种常见的线性数据结构,由一个个节点组成,每个节点包含两个部分:数据部分和指针部分。单链表的特点是每个节点只能指向下一个节点,而最后一个节点指向一个空指针。这个空指针常用来表示链表的结尾,一般命名为 nullptr。
2023-10-27 11:12:30 6188 4
原创 单链表的定义(数据结构与算法)
单链表是一种常见的数据结构,用于存储元素的序列。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用(指针)。单链表中的节点之间通过指针连接起来,形成一个线性结构。单链表是一种简单但灵活的数据结构,常用于实现队列、堆栈和图等其他高级数据结构。
2023-10-26 21:18:42 1254
原创 顺序表的查找(按位查找、按值查找)(数据结构与算法)
能够实现随机存储的基础就在于顺序表中所有的数据元素在内存里都是连续存放的,并且这些数据元素的数据类型相同,也就是说每个数据元素所占的内存空间一样大。所以我们只需要知道一个顺序表的起始地址,每个数据元素的大小,就可以立即找到第 i 个元素的位置。按值查找操作,在表L中查找具有给定关键字值的元素。GetElem(L, i) :按位查找,获取表L中第 i 个位置元素的值。如果换一个类型的指针,指向同一个地址,int *p;顺序表的按位查找---------动态分配。
2023-10-26 20:33:37 1437
原创 顺序表插入和删除(数据结构与算法)
顺序表是一种数据结构,其元素在内存中连续存储,并且可以使用下标直接访问每个元素。在顺序表中插入或删除元素时,需要移动后续元素的位置以保持顺序表的有序性。对于在下标位置i处插入值为x的元素,需要将下标为i~n-1的所有元素向右移动一个位置,然后将x插入到位置i的元素中。对于删除操作,需要将下标为i+1~n-1的所有元素向左移动一个位置,然后将下标为n-1的元素置空。需要注意的是,当动态扩展顺序表时,需要重新分配内存空间,因为当前内存空间可能已经被占满了。同时,为了减少多次扩充内存空间的开销,可以考虑一次
2023-10-26 11:22:39 8189
原创 顺序表的定义与实现(数据结构与算法)
首先,需要定义一个结构体或类来表示顺序表,可以包含如下成员:- 数据区域的指针,用于存储元素的数组。- 当前顺序表的大小(元素个数)。- 当前分配的存储空间大小。- 其他辅助变量或信息。
2023-10-26 09:52:46 460
原创 74HC595在【8x8LED点阵】中的运用
首先介绍一下74HC595工作原理不同厂家不同的型号的74HC595,它的符号命名会有所不同,但引脚规则是统一适用的,下面按我自己理解总结一下。如下图:13引脚:OE串行数据输入端使能端,低电平有效,接低电平/跳线帽接地。11引脚:上升沿到达时(SRCLK由0变1),从最高位开始依次输出8位数据。12引脚:RCLK为输出存储器锁存时钟线,只需记住当RCLK由0到1,即上升沿到达(产生一个正脉冲)时,进来的8位数据分别从1~7引脚输出。实现串行信号----->并行信号。14引脚:相当于搬运工
2020-07-06 13:21:26 2496 2
原创 基于趋近律的滑模控制器设计、仿真(S-function)
滑模控制(Sliding Mode Control, SMC)是一种非线性控制方法,常用于处理具有不确定性、非线性或外部干扰的系统。其基本思想是通过设计一个滑模面,让系统状态沿着这个面滑动到达目标状态,即稳定点。滑模控制是一种鲁棒性强的非线性控制方法,通过设计滑模面让系统状态沿面滑动到目标状态。它分为趋近和滑模两个阶段,能够有效抵御不确定性和干扰,但需要处理因离散切换引发的抖振问题。
2024-09-29 11:20:58 1112
原创 滑模面设计及其应用实例详解
对于线性系统x˙Axbux∈Rnu∈R滑模面可设计为sxCTxi1∑ncixi1∑n−1cixixn其中,x是状态向量,Cc1...cn−11T。在滑模控制中,参数c1c2...cn−1应该满足多项式pn−1cn−1pn−2...c2pc1为Hurwitz(赫尔维茨)稳定,p。
2024-09-26 14:12:31 1001
原创 反馈线性化详解
反馈线性化(Feedback Linearization)是一种控制策略,主要用于控制非线性系统。其核心思想是通过适当的反馈,使得一个非线性系统在控制器的作用下表现得像一个线性系统,从而简化控制器设计的复杂性。
2024-08-26 12:00:23 1085
原创 非线性系统控制器设计详解及案例仿真(s-function函数)
从该系统可以观察得出,把一个非线性系统,通过我们的输入将其线性话,这种方法叫反馈系统线性化,简单粗暴,只是单纯地消除原系统非线性部分,再添加一个稳定项,看似简单,但这种方法不一定是最佳的。同理,使用上述反馈线性化的方法,可以令。,若要使系统稳定,则需满足负定条件,
2024-08-03 16:38:36 705
原创 滑模面、趋近律设计过程详解(滑模控制)
滑模面sxs(x)sx是一个定义在状态空间中的超平面,使得系统在该超平面上具有期望的动态行为。sx0s(x) = 0sx0sxCTx−xdsxCTx−xd其中,CTC^TCT为设计矩阵,xdx_dxd为期望状态。滑模面的设计是一个系统化的过程,涉及到系统模型的分析、滑模面函数的定义和参数选择、控制律的设计以及验证和调整。通过合理设计滑模面,可以实现对系统的有效控制,尤其在不确定性和扰动较大的情况下表现出优越的鲁棒性。
2024-08-01 09:55:24 2353
原创 滑模变结构控制仿真实例(s-function代码详解)
使用符号函数的控制器u,会产生明显抖振,为了消除抖振,可以采用饱和函数来替代符号函数。更改代码实现饱和函数控制器,只需把之前函数输出部分代码中。冲突,将输入 u 用 control_u 替代。并在s-function函数最下方(即。将数学模型中状态变量表达式代入可得。= 趋近律, 采用指数趋近律。函数的导数负定,系统渐进稳定,仿真中,为避免与模板中的。可以看出,抖振被有效消除。为符号函数)求得控制器。, 改进后的控制器u为。
2024-07-31 15:39:03 1339 2
原创 Windows下安装vim(命令行超简单一步到位)
若安装完Vim后输入 vim 后出现 “不是内部命令” 的错误,这可能是因为Vim的安装路径没有被正确添加到系统的环境变量中。可以手动添加Vim的安装路径到系统的环境变量中,或者直接使用安装路径来启动Vim。如果想从Microsoft Store安装,你可以打开Microsoft Store并搜索"Vim Cheat Sheet"或者直接点击Vim Cheat Sheet的ID进行安装。关闭并打开新的命令提示符或PowerShell窗口,输入 vim 并按下回车键,应该能够正常启动Vim了。
2024-04-29 10:36:49 1238
原创 git远程仓库分支推送与常见问题
最佳实践还是推荐在本地创建一个与远程 CubeMX 分支同名的分支,进行相关的操作,完成后可以根据需要删除这个临时分支。将本地 main 分支与远程 CubeMX 分支关联: 首先,你需要在本地创建一个与远程 CubeMX 分支关联的新分支,这里我们只是暂时关联,操作完成后可以删除这个分支。将本地更改推送到远程 CubeMX 分支: 确保 Test1 文件已经被添加到暂存区并提交到本地 main 分支。是的,为了将本地 main 分支中新添加的 Test1 文件的更改合并到远程仓库的 CubeMX 分支,
2024-03-09 10:41:51 1117
原创 git如何关联远程分支并推送更新
假如本地主分支为master,github远程分支为main(主),CubeMX。本地文件修改后,若要将master分支所在文件的修改提交到指定远程仓库分支,如下图main。
2024-03-09 09:30:23 827
原创 Error: L6218E: Undefined symbol 系列错误汇总 (referred from main.o)
函数在main中调用了,但确找不到这个符号,因此该文件中会出现函数右键无法跳转、无代码提示,因为bsp_led.c这个文件压根没出现在工程中。:因为忘记添加 bsp_led.c了!就那么狗血的问题困扰我半小时!中的函数无法跳转、也没有代码提示。望广大码友引以为戒, 别像我一样犯那么低级的错误。文件, 结果总是出现以下错误,类似问题会持续更新在这篇博客里。
2024-01-14 15:24:01 7920 4
原创 Git初学入门指令
git initgit statusgit log回退到指定提交版本:如果你知道要回退到的提交版本的哈希值(commit hash),可以使用以下命令回退到该提交的状态:请将 替换为你要回退到的提交版本的真实哈希值。这将把代码状态重置到指定提交之前的版本。
2023-12-07 19:33:47 491
原创 c++中操作符->与 . 的使用与区别
在C++中,**->** 和 **.** 是两个不同的成员访问操作符,用于访问类、结构体或联合体的成员。
2023-10-08 11:08:05 833 1
原创 C++中new的语法与使用
C++ 中的,它是用于动态分配内存的关键字。让我们从零基础的角度来阐述的作用。在 C++ 中,内存可以静态分配和动态分配。静态分配指的是在编译时为变量分配固定的内存空间,而动态分配则是在程序运行时根据需要分配内存空间。使用,可以在运行时动态地分配内存空间,并返回得到分配的内存块的地址。这个过程被称为动态内存分配。
2023-10-07 16:08:23 834
原创 C++中类模板的语法与使用
typename定义类模板:使用template关键字和类型参数声明类模板,定义类的成员和方法,并在需要时使用类型参数。// 类模板定义的成员和方法实例化类模板:通过提供具体的类型参数来实例化类模板,并创建特定类型的对象,编译器会根据具体的类型参数生成相应的类代码。。// 实例化一个存储整数的堆栈// 实例化一个存储字符串的堆栈使用实例化后的对象:对于每个实例化后的类,你可以像使用任何其他类一样使用它,调用它的成员函数,访问它的成员变量,并根据需要进行操作。
2023-10-07 11:30:48 113
原创 VSCode 安装配置教程详解包含c++环境配置方法
重启之后在盘中新建一个Helloworld文件夹,选中文件-将该文件添加进工作区,为确保编译器已正确安装和配置,我们将创建最简单的 Hello World C++ 程序。当初我的mingw64是安装在F盘的,因此在终端中先输入F: 切换到F盘,接着输入g++ --version回车,如图表示安装成功。如图,主目录中不含空格,中文以及其他字符,解压后放到mingw64文件夹,这个文件很重要,一定要仔细。下载完成后,解压到不含空格与字符、中文的目录下,以下目录是错误的,我将其解压到上一级目录中。
2023-06-19 13:51:03 3959
原创 C语言指针入门学习、知识点梳理(四)
形参和实参永远不同,他们在不同的函数中,分配的空间也不同,属于不同的变量,主函数传递给调用函数的值相当于是拷贝过去的,并不影响主函数中的实参,只有调用函数有了主函数变量的地址时,才可以直接控制修改实参变量,而指针可以通过地址在调用函数中远程修改主函数中的变量值。
2023-06-16 13:18:46 1103
原创 C语言指针入门学习、知识点梳理(三)
p是地址,*p是值,p和q的地址互换并不影响a,b ,a,b的地址和值并没有改变, 通俗来讲就是:a,b分别住在两间房中,p,q把门牌号互换了,但a,b还各自躺在原来的房间里,房间相对于走廊的地址并没有变(如a开始是在二楼第一间,互换门牌号后还是在二楼第一间)。
2023-06-16 01:19:18 455
原创 C语言指针入门学习、概念梳理(二)
int * p 定义的是p而不是*p,未初始化赋值时,系统给p随机分配了一个未知垃圾地址,*p代表p指向的垃圾地址中所存放的未知内容(可能是系统中的重要数据,若被更改,系统可能崩溃),故系统无权对*p进行读写。
2023-06-14 12:49:07 707
原创 C语言指针入门学习、概念梳理(一)
首先,搞清楚指针是什么?-------指针就是个地址,指针和地址是一个概念。那地址又是什么?----- 地址就是内存单元的编号以内存条为例,里面分很多小单元,其中一个单元有八位(存放8个0或8个1),也就是说内存的编号是以字节来算的,而不是位。不是一个0/1为一个编号,而是8个0/1作为一个编号如1000 0010为一个编号,即一个字节,该编号即为地址。程序示例1int * p;//p是变量的名字,int * 表示p变量存放的是int类型变量的地址,p只能存放整形变量地址。int i = 3;
2023-06-04 10:09:32 734
挑战杯指导手册 (1).docx
2020-02-14
挑战杯项目计划书.docx
2020-02-13
电子大赛电源设计资料.rar
2020-02-12
C语言农夫过河实验报告.doc
2020-02-08
Python入门笔记.docx
2020-02-08
C语言学生管理系统实验报告.doc
2020-02-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人