- 博客(53)
- 资源 (9)
- 收藏
- 关注
原创 循环队列(出队、入队、判空、长度、遍历、取头)(数据结构与算法)
头尾相连:循环队列将队列的头部和尾部连接起来形成一个环状结构,当队列的尾部指针达到数组的最末尾时,它将会绕回到数组的开头。涉及到移动、赋值原队列参数的函数参数列表如front,rear,都最好别用&引用,否则会修改原队列中的地址和数值如:SqQueue &Q。这意味着在将变量传递给函数时,将创建该变量的一份副本,并在函数内部使用该副本。这意味着该函数将直接操作传递给它的变量,而不是创建该变量的副本。使用SqQueue Q作参数列表时,函数引入的只是一份副本,不会修改原队列中变量、指针的空间地址与数值。
2023-11-18 14:20:19 897
原创 (C++)栈的顺序存储及实现(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
【代码】栈的顺序存储及实现(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
2023-11-16 16:41:32 466
原创 (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
链栈是运算受限的单链表、只能在链表头部进行操作 1.链表的头指针就是栈顶,链头为栈顶,链尾为栈底 2.栈的链式存储不需要附设头节点 3.基本不存在栈满的情况,不需要判断栈满,但要判空 4.空栈相当于头指针指向空 5.插入和删除仅在栈顶处执行 6.因为是动态分配空间,所以需要释放
2023-11-16 16:22:43 204
原创 栈的顺序存储实现(C语言)(数据结构与算法)
10//定义栈中元素的最大个数ElemType data[MaxSize] //静态数组存放栈中元素int top;//栈顶指针}SqStack;//初始化栈S.top = -1;//初始化栈顶指针//判断栈空if(S.top == 1) //栈空else //不空SqStack S;//声明一个顺序栈(分配空间)//.....后续操作......(增删改查)
2023-11-09 21:33:28 573
原创 静态链表的定义与基本操作(C语言版)(数据结构与算法)
由于静态链表没有指针来直接跳转到下一个节点,所以需要使用游标来遍历链表。在静态链表中如果要表示,这个结点是最后一个结点,游标的值可以设为 -1, 表示之后已经没有其他结点了。遍历静态链表,找到要插入位置的前一个节点。可以使用一个游标来遍历链表,初始时指向链表的头节点。将新节点的下一个节点指向前一个节点的下一个节点,然后将前一个节点的下一个节点指向新节点的位置。这是一个简单的线性查找算法,时间复杂度为O(n),其中n是链表中节点的数量。在静态链表的空闲位置上分配一个新节点,为新节点赋值。
2023-11-04 20:00:22 354
原创 算法的基本概念(数据结构与算法)
数据结构提供了一组基本的操作来对数据进行存储、检索、插入、删除等操作,如查找、排序、插入、删除和修改等。数据结构是指数据元素之间的关系和组织方式,在计算机科学中被广泛应用于存储和操作数据的方法和技术。线性结构:数据元素之间存在一对一的关系,如数组、链表、栈和队列。非线性结构:数据元素之间存在一对多或多对多的关系,如树和图。链式存储结构:通过指针将数据元素连接在一起,如链表、树和图。顺序存储结构:使用一段连续的存储空间存储数据元素,如数组。数据元素是构成数据的基本单位,可以是数字、字符、记录等。
2023-11-04 16:42:57 110
原创 循环链表(单循环、双循环)(数据结构与算法)
循环单链表与普通单链表的主要区别在于,循环单链表的尾节点的指针不是指向 nullptr,而是指向头节点,形成一个闭环。这意味着,在循环单链表中,可以通过尾节点的指针重新回到头节点。循环双链表与普通双链表的主要区别在于,循环双链表既具有双向链表的前驱和后继关系,也具有循环遍历的能力。
2023-11-04 16:31:41 894
原创 数据结构与算法超详细笔记(含代码分析)
2.1 顺序表的定义与实现2.2 顺序表的插入和删除2.3 顺序表的查找(按值、按位查找)3.1 单链表的插入与删除3.2 单链表的查找(按值、按位查找)3.2 单链表的建立(头插法、尾插法)持续更新中。
2023-11-04 10:16:51 94
原创 双链表详解(初始化、插入、删除、遍历)(数据结构与算法)
同时,删除节点后必须确保释放相应的内存空间,以防止内存泄漏问题的发生。11. 双链表相较于单链表需要额外存储指向前一个节点的指针,因此会在空间上占用更多的内存。7. 双链表的每个节点包含三个部分:数据域、指向前一个节点的指针和指向下一个节点的指针。在双链表中删除节点的操作相对比较复杂,因为我们需要维护前驱节点和后继节点之间的指针连接。在双链表中插入节点需要更新前驱节点和后继节点的指针连接,操作相对比较复杂。将 p 结点的next指针,指向q结点的后继结点。程序设计如下:注意修改指针时要注意顺序!
2023-11-04 09:23:43 1297 1
原创 单链表的建立(头插法、尾插法)(数据结构与算法)
如果要把很多个数据元素存到一个单链表中,如何操作?1.初始化一个单链表2. 每次取一个数据元素,插入到表尾/表头。
2023-11-03 19:35:58 2695
原创 单链表的查找(按值查找、按位查找)(数据结构与算法)
什么是单链表?单链表是一种常见的链式数据结构,用于存储和操作数据元素的集合。它由一系列的节点组成,每个节点包含两个部分:数据域和指针域。单链表的每个节点包含了存储数据的数据域,以及指向下一个节点的指针域。通过这些指针域,节点之间可以按顺序连接起来,形成一个链式结构。链表的最后一个节点通常指向一个特殊的空节点(NULL或nullptr),表示链表的结束。相比于数组,链表的一大优势是它的动态性。在链表中,节点的添加、删除可以通过修改指针的指向来完成,不需要像数组那样进行元素的移动。
2023-11-03 11:28:07 2277 1
原创 单链表的插入删除(数据结构与算法)
单链表是一种常见的线性数据结构,由一个个节点组成,每个节点包含两个部分:数据部分和指针部分。单链表的特点是每个节点只能指向下一个节点,而最后一个节点指向一个空指针。这个空指针常用来表示链表的结尾,一般命名为 nullptr。
2023-10-27 11:12:30 2433 2
原创 单链表的定义(数据结构与算法)
单链表是一种常见的数据结构,用于存储元素的序列。它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的引用(指针)。单链表中的节点之间通过指针连接起来,形成一个线性结构。单链表是一种简单但灵活的数据结构,常用于实现队列、堆栈和图等其他高级数据结构。
2023-10-26 21:18:42 570
原创 顺序表的查找(按位查找、按值查找)(数据结构与算法)
能够实现随机存储的基础就在于顺序表中所有的数据元素在内存里都是连续存放的,并且这些数据元素的数据类型相同,也就是说每个数据元素所占的内存空间一样大。所以我们只需要知道一个顺序表的起始地址,每个数据元素的大小,就可以立即找到第 i 个元素的位置。按值查找操作,在表L中查找具有给定关键字值的元素。GetElem(L, i) :按位查找,获取表L中第 i 个位置元素的值。如果换一个类型的指针,指向同一个地址,int *p;顺序表的按位查找---------动态分配。
2023-10-26 20:33:37 467
原创 顺序表插入和删除(数据结构与算法)
顺序表是一种数据结构,其元素在内存中连续存储,并且可以使用下标直接访问每个元素。在顺序表中插入或删除元素时,需要移动后续元素的位置以保持顺序表的有序性。对于在下标位置i处插入值为x的元素,需要将下标为i~n-1的所有元素向右移动一个位置,然后将x插入到位置i的元素中。对于删除操作,需要将下标为i+1~n-1的所有元素向左移动一个位置,然后将下标为n-1的元素置空。需要注意的是,当动态扩展顺序表时,需要重新分配内存空间,因为当前内存空间可能已经被占满了。同时,为了减少多次扩充内存空间的开销,可以考虑一次
2023-10-26 11:22:39 2836
原创 顺序表的定义与实现(数据结构与算法)
首先,需要定义一个结构体或类来表示顺序表,可以包含如下成员:- 数据区域的指针,用于存储元素的数组。- 当前顺序表的大小(元素个数)。- 当前分配的存储空间大小。- 其他辅助变量或信息。
2023-10-26 09:52:46 302
原创 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 2130 2
原创 git远程仓库分支推送与常见问题
最佳实践还是推荐在本地创建一个与远程 CubeMX 分支同名的分支,进行相关的操作,完成后可以根据需要删除这个临时分支。将本地 main 分支与远程 CubeMX 分支关联: 首先,你需要在本地创建一个与远程 CubeMX 分支关联的新分支,这里我们只是暂时关联,操作完成后可以删除这个分支。将本地更改推送到远程 CubeMX 分支: 确保 Test1 文件已经被添加到暂存区并提交到本地 main 分支。是的,为了将本地 main 分支中新添加的 Test1 文件的更改合并到远程仓库的 CubeMX 分支,
2024-03-09 10:41:51 1004
原创 git如何关联远程分支并推送更新
假如本地主分支为master,github远程分支为main(主),CubeMX。本地文件修改后,若要将master分支所在文件的修改提交到指定远程仓库分支,如下图main。
2024-03-09 09:30:23 426
原创 Error: L6218E: Undefined symbol 系列错误汇总 (referred from main.o)
函数在main中调用了,但确找不到这个符号,因此该文件中会出现函数右键无法跳转、无代码提示,因为bsp_led.c这个文件压根没出现在工程中。:因为忘记添加 bsp_led.c了!就那么狗血的问题困扰我半小时!中的函数无法跳转、也没有代码提示。望广大码友引以为戒, 别像我一样犯那么低级的错误。文件, 结果总是出现以下错误,类似问题会持续更新在这篇博客里。
2024-01-14 15:24:01 1191 3
原创 Git初学入门指令
git initgit statusgit log回退到指定提交版本:如果你知道要回退到的提交版本的哈希值(commit hash),可以使用以下命令回退到该提交的状态:请将 替换为你要回退到的提交版本的真实哈希值。这将把代码状态重置到指定提交之前的版本。
2023-12-07 19:33:47 418
原创 c++中操作符->与 . 的使用与区别
在C++中,**->** 和 **.** 是两个不同的成员访问操作符,用于访问类、结构体或联合体的成员。
2023-10-08 11:08:05 553 1
原创 C++中new的语法与使用
C++ 中的,它是用于动态分配内存的关键字。让我们从零基础的角度来阐述的作用。在 C++ 中,内存可以静态分配和动态分配。静态分配指的是在编译时为变量分配固定的内存空间,而动态分配则是在程序运行时根据需要分配内存空间。使用,可以在运行时动态地分配内存空间,并返回得到分配的内存块的地址。这个过程被称为动态内存分配。
2023-10-07 16:08:23 426
原创 C++中类模板的语法与使用
typename定义类模板:使用template关键字和类型参数声明类模板,定义类的成员和方法,并在需要时使用类型参数。// 类模板定义的成员和方法实例化类模板:通过提供具体的类型参数来实例化类模板,并创建特定类型的对象,编译器会根据具体的类型参数生成相应的类代码。。// 实例化一个存储整数的堆栈// 实例化一个存储字符串的堆栈使用实例化后的对象:对于每个实例化后的类,你可以像使用任何其他类一样使用它,调用它的成员函数,访问它的成员变量,并根据需要进行操作。
2023-10-07 11:30:48 66
原创 VSCode 安装配置教程详解包含c++环境配置方法
重启之后在盘中新建一个Helloworld文件夹,选中文件-将该文件添加进工作区,为确保编译器已正确安装和配置,我们将创建最简单的 Hello World C++ 程序。当初我的mingw64是安装在F盘的,因此在终端中先输入F: 切换到F盘,接着输入g++ --version回车,如图表示安装成功。如图,主目录中不含空格,中文以及其他字符,解压后放到mingw64文件夹,这个文件很重要,一定要仔细。下载完成后,解压到不含空格与字符、中文的目录下,以下目录是错误的,我将其解压到上一级目录中。
2023-06-19 13:51:03 3331
原创 C语言指针入门学习、知识点梳理(四)
形参和实参永远不同,他们在不同的函数中,分配的空间也不同,属于不同的变量,主函数传递给调用函数的值相当于是拷贝过去的,并不影响主函数中的实参,只有调用函数有了主函数变量的地址时,才可以直接控制修改实参变量,而指针可以通过地址在调用函数中远程修改主函数中的变量值。
2023-06-16 13:18:46 1015
原创 C语言指针入门学习、知识点梳理(三)
p是地址,*p是值,p和q的地址互换并不影响a,b ,a,b的地址和值并没有改变, 通俗来讲就是:a,b分别住在两间房中,p,q把门牌号互换了,但a,b还各自躺在原来的房间里,房间相对于走廊的地址并没有变(如a开始是在二楼第一间,互换门牌号后还是在二楼第一间)。
2023-06-16 01:19:18 390
原创 C语言指针入门学习、概念梳理(二)
int * p 定义的是p而不是*p,未初始化赋值时,系统给p随机分配了一个未知垃圾地址,*p代表p指向的垃圾地址中所存放的未知内容(可能是系统中的重要数据,若被更改,系统可能崩溃),故系统无权对*p进行读写。
2023-06-14 12:49:07 647
原创 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 677
原创 Keil环境添加STC系列单片机
Keil中一般默认使用AT89系列单片机代替STC系列,虽兼容两者程序,引脚。但由于性能不同,有时需做区分。使用STC-ISP将STC型号添加到Keil环境重启Keil 软件,进入魔术棒选项,作如下操作即可
2022-03-01 13:45:18 2923 3
原创 Proteus无法在您的库中找到系统文件PRODEFS.INT,LIBRARY文件夹路径错误。
因为打不开之前低版本的proteus工程文件,最近卸载重新安装了一个新版本的proteus8.10,安装时由于系统仍保留上一版本在C盘里的安装路径,这次安到D盘了,出现了一些错误,在此总结一下解决方法,也供广大网友参考避坑。首先打开proteus,打开系统设置。在以下的文件夹中,文件图表上会显示一个“红色的叉”,说明路径有问题,你需要在这四个框(全局设置、仿真器设置、PCB设计设置、崩溃报告)中分别重新设置一下目录路径。双击击带“红叉”的文件夹图标,找到当前的安装目录,依次找到TEMPLATES
2021-06-29 21:34:47 21353 24
原创 C:\KEIL\C51\intrins.h包含不正确的路径。Keil 头文件路径错误
步骤1:先检查工程中的#include “intrins.h” #include “stdio.h”,各文件之间 是否正确调用。步骤2:将#include <intrins.h>、<reg52.h> 改成#include “intrins.h’ 、“reg52.h” 原因:” " 比 < >的查找范围大。步骤3:在keil中,点击魔术棒,进入C51窗口----include paths...
2021-06-29 15:14:57 18849 5
原创 由于找不到VCRUNTIME 140_1.dll 无法继续执行代码(浏览器页面无响应)
------昨天准备用firefox浏览器看网盘(网页倍速真香~),突然发现打不开了,即使打开网页也全是空白,一点儿反应也没有,仔细想想可能是前几天清理磁盘和无用文件时,把系统文件搞没了,尝试卸载重装之后还是不行。如图,除了可以点击之外,其他搜索、网页、设置全部失效。搜索框处的安全锁,画上了叉号。根据问题窗口,可以得知:由于找不到vcruntime140_1.dll,无法继续执行代码,因此是缺失了某个系统文件,只需要把这个文件下载,并放入系统文件夹就行了。vcruntime140_1.dll
2021-04-29 11:33:22 5002
原创 “const char *“ 类型的值不能用于初始化 “char“ 类型的实体
因为const char* 和char *类型不匹配解决的方法有三种: 使用强制类型转换:char str = "hello world"; //错误代码 双引号char str = (char)"hello world";//正确代码 使用强制类型转换 先用字符数组进行存储,然后再使用指针:char str[] = "hello world"; 在visual studio中,在项目上右键,在弹出菜单上选择“属性”,选择“C/C++”,然后在“语言”中,把“符合模式”
2021-02-10 13:13:05 1386 2
原创 error C2143: 语法错误 : 缺少“;”(在“}”的前面。error LNK1120: 1 个无法解析的外部命令。error LNK2019: 无法解析的外部符号 _main,该符号在函数
以前入门学习用的基本是codeblocks,DEVC++之类的编译器,感觉没有太大阻碍,但最近使用VC 2010 或者VS,在纯C语言编译下执行时,总是会出现,这样那样满脸问号???的错误,警告。哪怕是这样一个小学生都能看懂的程序temp1.c,也不给通过!!!。#include <stdio.h> //temp1.cint main(){ printf("Hello, World!"); return 0;}这么个程序,5个错误!我承认我很久没敲了,但也
2021-02-04 10:04:12 1274 3
原创 _CRT_SECURE_NO_WARNING错误提示解决方法。
#include <stdio.h>int main(){ float f; printf("Enter a number: "); // %f 匹配浮点型数据 scanf("%f",&f); printf("Value = %f", f); return 0;}这是一个简单的输入打印程序,当被codeblocks,DEV C++等低版本的编译器执行时,本该不出现任何问题。而我在使用一些高版本的如VS或VC(我这是VC 2010)
2021-02-03 21:16:33 5075 2
转载 前馈控制、反馈控制及前馈-反馈控制的对比
1、前馈控制属于开环控制,反馈控制属于负反馈的闭环控制一般定值控制系统是按照测量值与给定值比较得到的偏差进行调节,属于闭环负反馈调节。其特点是在被控变量出现偏差后才进行调节;如果干扰已经发生而没有产生偏差,调节器不会进行工作。因此反馈控制方式的调节作用落后于干扰作用。前馈调节是按照干扰作用来进行调节的。前馈控制将干扰测量出来并直接引入调节装置,对于干扰的克服比反馈控制及时。现在以换热器控制方案举例,直观阐述前馈控制和反馈控制:2、前馈控制系统中测量干扰量,反馈控制系统中测量被控变量在单纯的前馈控
2021-01-07 19:13:58 12919
挑战杯指导手册 (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关注的人