自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 树的前序遍历和后序遍历(非递归!!!)

1、前序遍历:在处理前序遍历时,我们要做的遍历顺序时,根左右,我们通过栈来实现,那么对应的入栈顺序就是,根先进栈,然后出栈,然后右孩子进栈,左孩子再进栈,然后左孩子作为根结点,出栈,然后原左孩子的右孩子入栈,左孩子再入栈……2、后序遍历:后序遍历要做到的遍历顺序则是,左右根,那么我们可以将前序遍历的顺序改变一下,先入栈根结点,然后入栈左孩子,然后入栈右孩子……循环,最后做到了根右左,然后我们对结果进行翻转,就得到了左右根的顺序。树的前中后序遍历的递归法在我往期文章中,需要可以查看。

2025-04-19 09:38:14 68

原创 C语言数据结构:树的实现、前序、中序、后序遍历

树是一种非线性的数据结构,由若干个节点组成。每个节点都包含数据,并且可以有多个子节点。树的最顶端是一个特殊的节点,叫根节点,它没有父节点。从根节点开始,树不断向下分叉,形成不同的层次。最底层的节点叫叶子节点,它们没有子节点。

2025-04-12 18:50:48 411

原创 力扣题解:142. 环形链表 II

循环链表是一种特殊类型的链表,其尾节点的指针指向头节点,形成一个闭环。4).快指针在一圈内追上慢指针:如果慢指针走一圈,快指针则走了两圈,在这两圈内,快指针一定会与慢指针相遇,所以快指针在一圈内追上慢指针。2).如果有环,则快指针先进入环,慢指针后进入环, 如果无环,则fast会走出循环判断条件,返回空。3).有环时,慢指针进入环后,快指针相对慢指针每次移动一格,也就是快指针会追上慢指针。1).我们声明两个指针,快指针每次向链表下方走两步,慢指针则走一步;入口距离=(n-1)圈长+相遇点到入口的距离。

2025-04-09 21:41:33 367

原创 C语言数据结构:队列的操作实现

队列是一种常见的数据结构,遵循先进先出(FIFO)原则,即最先进入的元素最先被移除。它类似于现实生活中的排队,先到的人先接受服务。

2025-03-28 20:55:33 271

原创 C语言数据结构:栈的操作实现

2、进制转换(直接取余得到的顺序和结果相反,通过栈来调转)本文使用顺序栈,实现二进制转换。1、中缀表达式转后缀表达式。栈(Stack)是一种遵循。3、款项金额转中文大写。4、编辑器中括号的匹配。

2025-03-21 20:34:51 200

原创 C语言数据结构:双向链表的操作实现

双向链表(Doubly Linked List)是一种常见的线性数据结构。与单链表不同,双向链表的每个节点不仅包含指向下一个节点的指针(对双向链表的操作有:头插法,尾插法,清空链表,遍历链表,得到尾结点,特定位置插入,特定位置删除。这种结构使得双向链表可以从两个方向遍历,操作更加灵活。:由于有前驱指针,可以更方便地操作节点的前驱和后继。接下来我们通过代码来看对双向链表的操作。),还包含一个指向前一个节点的指针(:每个节点需要额外存储一个前驱指针。:可以从头到尾或从尾到头遍历链表。

2025-03-15 15:27:05 133

原创 C语言数据结构:链表的操作实现

2、寻找链表的中点(也可以找到其他比例的点去分割链表):快指针一次向尾部走两步,慢指针走一步,直到指向NULL,这时慢指针就会指向中间结点(偶数链表会指向中间的上一个,奇数会指向中间值)。本文包括链表的基本操作:初始化、头插法、尾插法、遍历打印、获取尾结点地址、指定位置添加和删除结点、获取链表长度、得到尾指针、释放链表、获得倒数第K个结点的值(快慢指针法)、翻转链表。1.找到倒数第K个值:快指针先走K步,循环向链表尾部走,直到指向NULL,这时慢指针就会指向想要的结点。

2025-03-09 17:02:50 371

原创 数据结构笔记

O(1)<O(log2n)(以2为底)<O(n)<O(nlog2n)<O(n²)<O(n³)<O(2^n)<O(n!数据:所有能够输入到计算机中,且能被计算机处理的符号的集合。- 链式存储 (每个节点、数据元素 附加额外的指针字段,通过指针建立逻辑关系)数据(集合)中的一个个体,是数据的基本单位,包含多个数据项。数据元素在存储器(内存、磁盘)中的存储结构 ,面向开发者。T(n) = O(f(n)),使用 O() 表示,<A,B> A是B的前驱,B是A的后驱。数据对象:由属性相同的数据元素构成的集合。

2025-03-09 16:22:57 229

原创 c语言数据结构:顺序表增删改查函数的实现

1、下列代码中 我用Eelemtype 来对int 取别名,在本段代码中意义不明显,但是在大量数据中如果要改int 型为 double型,则取别名的有点就显现出来了。其中共包含:1、初始化 2、最后一位插入 3、遍历 4、特定位置插入数据元素 5、特定位置删除数据元素 6、查找数据元素e第一次出现的位置。在数据结构中,我们最先接触到的内容就是线性表,本片文章的内容就是线性表中对顺序表增删改查的c语言实现。5、要注意顺序表的位置和在数组中序号的关系,length-1。4、对结构体取别名 Sq。

2025-03-06 18:04:34 288

原创 C语言学习笔记:初阶指针

在上述结果中我们可以看到,指针是有自己的地址的,当我们把指针指向a数组后,打印指针内的内容就变成了数组的首地址,我们通过 * 解引用,可以取出数组首地址中所存储的内容。我们需要对 * 解引用符号和& 取地址符号保持敏感,当指针名前有解引用符号,则表示的是指针里内容的地址,,当指针名前有&取地址时,则表示指针本身的地址。与系统有关 32位 4字节 64位 8字节,指针使用前需要赋值 , 否则就是空指针。在以后对指针的运用中,我们很容易搞混指针地址,指针中的地址,指针中的地址里的内容。

2025-03-06 17:45:09 148

原创 C语言学习笔记:函数的递归

首先我们声明了两个函数 func1 和 func2 分别采用不同的方法,func1 返回一个整型变量,我们直接赋值为6,省略判断步骤,func1需要一个for循环来解决这个计算,而func2,他的返回值是一个三元运算,只需要一行就可以完成计算需求。观察func2就可以发现,在将3赋值给n时,会进行第一次三元运算,判断 n是否大于1,n=3,则n*func2(n-1),这时再次调用func2函数,形参就变成了2,然后再次判断后进入三元运算,这时n=1,返回值为3*2。函数是构成c语言的基本单元;

2025-02-18 15:18:34 439

原创 C语言学习笔记:子函数的调用实现各个位的累加和

然后 n除以10 ,然后判断n是否符合条件,如果n>0 ,则再次将n对10取余,将得到的数加到r,往复此步骤,直到n<0,然后返回 r ,得到各个位的累加和。首先我们先思考以下各个位的和怎么计算:举例,483,我们首先求他的个位数,则是483%10,对10取余,得到3,然后求他的十位数,483/10=48(因为我们用的整数计算,没有用浮点数,所以对省略小数部分),48%10=8,再次对10取余得到8,那么我们再除以十,得到4,4%10=4,然后我们将3 8 4累加起来,就是我们想要的结果。

2025-02-10 14:52:02 367 1

原创 51单片机学习日记:数码管显示

讲解数码管显示的位选和段选,附带数码管动态显示的C语言程序

2025-02-08 18:57:45 629

原创 C语言学习笔记:通过二维数组打印杨辉三角形

二维数组打印杨辉三角,有代码

2025-02-04 20:22:58 498

原创 51单片机学习日记:独立按键控制LED灯(二)

独立按键控制LED实现LED二进制和位移

2025-01-26 20:17:56 643

原创 C语言学习笔记:while循环实现2进制转换

在这个代码内,我们首先声明了整型变量n,这代表我们输入的数,i 则是计数器,因为我们让n/2后的余数存储到数组内,就需要一个计数器来作为索引,即第一次循环结果存储到a[0],第二个存储到a[1]……然后我们声明数组,因为我们数组的大小是根据循环次数来定义的,所以我们没办法直接初始化,但是当输入 0和1时都有不进入循环的情况,所以数组内有垃圾值,我们需要进行初始化。在进行转换时,先让输入的十进制数对2取余,这个值存入到数组内,然后让输入值除以2,再次进行循环,直到输入的数为0。

2025-01-25 21:19:31 337 1

原创 C语言学习笔记:for循环和打印等腰三角形(*)

我们先看变量为 J 的循环,我们需要在这个循环内解决每行打印几个的问题,我们先思考第一行,如果我们输入的c = 3,则最下面一行有5个 * 第二行则有 3个 * 号 ,第一行有1个 * 号,我们可以看出 如果是c = 4,从下到上则是7、5、3、1。我们可以思考出第一行的打印位置是当j = c时打印,第二行打印的3个则是再 c位置的左右两侧 1位,第三行则是 c位置的左右两侧两位,以此类推我们可以知道:;打印终点位置:c+行数-1,打印第二行时,i=1,在c-1到c+1的三个位置上打印*

2025-01-20 18:17:45 615 1

原创 51单片机学习日记:独立按键控制LED灯

对独立按键控制进行解释

2025-01-17 20:19:27 458

原创 51单片机学习日记:LED闪烁和流水灯

51单片机LED灯闪烁和流水灯的代码示例以及解释

2025-01-17 19:44:55 475

原创 C语言学习笔记:if语句讲解和月份的天数判断以及闰年判断示例

对if以及elseif讲解,用月份天数和闰年判断示例讲解

2025-01-16 18:52:58 311

原创 C语言学习笔记:位运算和三元运算

在计算机中的数大多都是以二进制进行存储的,位运算就是对二进制数位进行操作的运算,这样可以大大提升运算效率,也更方便理解。在位运算中有与、或、异或、取反、左移、右移6个运算符,如图有运算规则。在此介绍一下异或的一种用法:可以通过异或运算进行两个数值的交换。#异或 ^ 运算两者不同 有真为真 1相同的值异或得 0a=2 b=3  互换位置1011――01  a=a^b0111――10  b=a^b0110――11  a=a^b。

2025-01-15 20:02:33 170

原创 C语言学习笔记:比较运算与逻辑运算

解释比较运算与逻辑运算,以及对if的解释,有代码示例(比较简单)

2025-01-12 18:04:21 199 2

原创 51单片机学习日记:LED灯点亮

包含详细的代码和简略的操作步骤,以及一些注意事项

2025-01-12 17:23:11 547 3

原创 C语言学习笔记:运算

对算数运算和赋值运算的讲解

2025-01-11 16:04:06 423 2

原创 51单片机学习日记:开发工具与单片机简介

EA(31口)EA引脚表示存取外部程序代码之意,低电平动作,当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。21 区域是我们所熟知的89C51芯片,他也是单片机最为核心的部分,89C51共有40个引脚,在初学时我们需要记住 P1~P4对应的区域,以及VSS和GND,以免再安装芯片时反向导致损坏。单片机,简称MCU,里面集成CPU,RAM,ROM,定时器,通讯接口等一系列常用的电脑功能,所以我们可以将其看作一个袖珍版的计算机。XTAL2 (18口) 晶振输入口。

2025-01-09 19:42:19 441 1

原创 C语言学习笔记:数据类型

在我们存储输入的数据或运算的中间值及结果时,需要声明划分存储空间,内存空间有编号,但不易于使用,所以给内存区域一个标识符,这个标识符即常量名和变量名。short 2字节 2^16=65536 既存正数又存负数还有0,所以存储单位为65536/2-1。unsigned int 4 (操作系统不同可能就不是4字节)-基本类型(int char float char long)-类型 (类型大小于平台(编译器实现)有关)-复合类型(数组、结构体、联合、枚举、类)

2025-01-09 19:09:13 147 1

原创 C语言学习笔记

4.链接: 生成 执行文件(在linux中没有后缀名;#define N 42定义常量N(文本替换,代码中所有的N替换为42)cc -c 生成a.o文件,还未链接库,不可执行。-参数列表(argc 参数个数 argv 参数值)cc -o 加想要的文件名 加链接的文件名。cc -S (a.out)汇编默认文件名。系统编程:文件 网络 进程 并发进程…3.编译: 生成a.o目标文件。main :主函数 C程序的入口。GCC GNU 自由软件基金会。2.汇编:生成 a.s汇编文件。

2024-12-20 17:20:32 244 2

原创 Linux系统学习:权限管理

权限还可以通过三位二进制数表达,以rwx的顺序,有该权限位1;例如,可读可执行为:101,转化为十进制数为5;可读可编辑为:110,转换为10进制数为6。管理员用户可以在Linux系统中做任何事,而普通用户的权限很有限;在Linux系统中,会有不同的用户,他们的权限是不同的。对文件,不同用户也由不同的权限;例如将 文件a.c的权限改为所有人可读可写,则命令为: chmod 666 a.c。而chown既可以改变组别也可以改变所属的用户:chown 用户或组 文件名称。修改组时的命令为 chgrp;

2024-12-20 17:13:22 359 1

原创 Linux基础:用户管理

Linux操作系统中可以存在多个用户分时操作,每个用户的“组”于权限都不尽相同;1、useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,需要使用passwd命令修改密码。2、adduser在使用该命令创建用户是会在/home下自动创建与用户名同名的用户目录,会在创建时会提示输入密码。除addusr意外,usradd也可以创建新用户,但要注意在不同系统下usradd和addusr有所区别,本文会介绍一些指令去创建、删除、退出、切换用户的指令,以及用户分“组”的操作。

2024-12-03 19:15:21 249 1

原创 目录结构简介

usr 是 unix system resources(unix 系统资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录,我们安装的程序通常在这个文件中。proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。

2024-12-03 18:51:34 676 1

原创 Linux系统学习:基础指令(二)

本次对vim进行简单讲解,更详细的操作可以下载vim后,通过vim tutor进行学习,个人认为vim tutor文本中学习3~5次就可以掌握vim的绝大多数命令。在基础指令(一)中主要介绍的是查看命令,本节会着重介绍文件的创建、删除、移动、复制等操作,以及通过vim编辑txt文件。(这些vim的简单操作可以快速上手去编辑内容,但是更推荐去vim tutor进行更细致的学习,会使在编辑文档时更高效。vim有三个模式:正常(normal)模式、可视模式、底行模式( 本人对三个模式的称谓)

2024-11-29 23:35:54 307 1

原创 Linux系统学习:基础指令(一)

基础的Linux终端指令

2024-11-29 22:49:23 177 1

空空如也

空空如也

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

TA关注的人

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