- 博客(23)
- 收藏
- 关注
原创 数据结构 二叉树与哈希表
定义:每个节点最多有 2 个后继节点(左孩子、右孩子)的树形结构。特殊二叉树满二叉树:所有叶子节点都在同一层,且每个非叶子节点都有两个子节点。完全二叉树:将二叉树所有节点按层序编号后,编号连续且与满二叉树的编号顺序完全对应。关键特性第 k 层最多有 2(k−1) 个节点。前 k 层最多有 2k−1 个节点。
2026-02-03 22:55:42
289
原创 数据结构 二叉树核心概念与特性
每个节点最多有 2 个后继节点,这两个后继节点分别被称为左孩子(左侧的子节点)和右孩子(右侧的子节点)。二叉树是数据结构中非常重要的基础内容,无论是理解后续的平衡二叉树、红黑树,还是解决算法中的路径问题、动态规划问题,都离不开对二叉树概念和特性的掌握。后续我们还会结合具体的代码实现,来深入讲解二叉树的遍历和各种操作。
2026-02-02 20:47:24
1065
原创 数据结构 C语言 顺序栈
核心作用:定规矩、做声明 —— 定义顺序栈的结构体、存储数据类型、宏常量,声明所有对外提供的函数接口,同时通过头文件保护机制避免重复包含导致的编译错误。头文件是模块的 “说明书”,其他文件只需包含头文件,无需关心底层实现,符合面向接口编程思想。// 宏常量:顺序栈最大容量,可按需修改// 统一数据类型定义:修改此处可适配char/float/结构体,实现一键扩展// 顺序栈核心结构体:存储栈的状态和数据int top;// 栈顶指针:空栈=-1,栈顶元素下标=top,满栈=MAX_SIZE-1。
2026-02-01 23:19:45
967
原创 数据结构 单向链表进阶
首先定义链表节点的数据类型和结构体,这是所有操作的基础,头文件linklist.h// 链表节点存储的数据类型(可根据需求修改)// 链表节点结构体// 节点数据域// 节点指针域(指向下一个节点)}Node_t;// 进阶操作函数声明// 找中间节点// 找倒数第N个节点// 反转链表// 冒泡排序链表// 选择排序链表// 判断链表是否有环// 基础操作(依赖)// 创建空链表// 头插法// 尾插法// 打印链表// 销毁链表#endif。
2026-01-30 20:25:13
554
原创 数据结构:带头节点单链表
编译器:gcc运行方式:终端编译,执行./linklist将链表的结构体定义、数据类型别名、函数声明统一放在头文件中,实现工程化的代码分离,便于维护。// 自定义数据类型,后续可直接修改为char/struct等,适配不同场景// 链表节点结构体定义// 节点存储的有效数据// 指向下一个节点的指针} Node_t;// 函数声明:带头节点单链表全套基础操作// 1. 创建空的带头节点单链表// 2. 头插法插入节点(从链表头部插入,逆序插入)
2026-01-29 23:23:34
755
原创 Makefile
赋值符号特点延迟赋值,使用时才展开,可能引发递归依赖:=立即赋值,定义时直接计算结果,避免递归问题+=追加赋值,在原有变量值后添加新内容?条件赋值,仅当变量未定义时才赋值。
2026-01-25 23:03:57
384
原创 C 语言 共用体、枚举与 typedef
共用体也叫联合体,是一种特殊的自定义数据类型。它的核心特点是所有成员变量共享同一块内存空间,同一时间只能有一个成员生效。// 1. 共用体类型定义union 共用体名 {数据类型1 成员变量1;数据类型2 成员变量2;数据类型3 成员变量3;...// 2. 定义共用体变量union 共用体名 变量名;枚举是一种用来定义命名整型常量集合的类型,它可以让代码更具可读性和可维护性。enum 类型名 {枚举常量1,枚举常量2,枚举常量3,...typedef。
2026-01-23 20:11:11
741
原创 C 语言 构造数据类型
结构体的本质是自定义一种新的数据类型,它可以包含多个不同类型的成员变量。定义了结构体类型后,我们需要创建该类型的变量来存储具体数据。结构体是 C 语言中处理复杂数据的核心工具,掌握它可以让你更高效地描述现实世界中的对象。从定义、初始化到访问,再到内存对齐和函数传参,每一步都需要理解其底层逻辑。
2026-01-22 20:10:47
591
原创 C语言 指针进阶
二级指针:核心用于修改外部指针指向、接收指针数组传参,使用前必须检查空指针。void 指针:实现泛型函数的核心,转换时需遵循 “隐式转 void*,显式从 void * 转” 的规则,禁止直接解引用和算术运算。volatile 指针:仅用于异步修改的变量 / 指针,保证内存可见性,但不保证原子性。数组指针 vs 指针数组:通过括号区分优先级,数组指针指向连续数组(处理二维数组),指针数组存储分散指针(处理字符串数组)。指针运算:移动字节数由指向类型的大小决定,void需转换为 char后再运算。
2026-01-21 19:49:58
1741
原创 C 语言指针
函数参数传递要 “用” 外部变量 → 传值要 “改” 外部变量 → 传地址(指针)数组传参 → 本质是传指向首元素的指针指针与数组数组名是指针常量,指向首元素数组下标访问a[n]等价于指针偏移访问*(a + n)指针也可以用p[n]的形式访问,和数组写法完全兼容。
2026-01-20 20:42:36
377
原创 C 语言 指针
数据类型 *指针变量名;数据类型:指针指向的内存数据类型(如 int、char、double),决定指针运算偏移量和解引用访问内存大小。注意:多个指针变量定义时,每个变量前需加,避免写成,后者p2为普通 int 变量)。int* p;(指向 int)、char* str;(指向 char)、(指向 double)。初始化(杜绝野指针):int a=10;int* p=&a;(最常用,确保指向有效)。(NULL 本质是 0,指向0x0不可读写地址,使用前需判断p!=NULL。
2026-01-19 23:56:58
508
原创 C 语言函数传参
全局变量定义在所有函数外部,其作用域覆盖整个程序,所有函数均可直接访问和修改全局变量。通过全局变量传递数据,本质是利用其 “全局可见性” 实现函数间数据共享。值传递时,实参将自身的值复制一份传递给形参,形参和实参在内存中占据独立空间。函数内部仅操作形参(副本),不会改变实参的原始值。形参接收地址后,通过地址访问数组元素,本质是操作原数组(实参数组)。,函数内部对形参的操作是否影响实参,取决于传参方式的选择。C 语言中数组名本质是 “数组首元素的地址”,数组传参时,,与普通数组传参逻辑一致。
2026-01-19 08:47:34
1017
原创 C 语言二维字符型数组
二维字符数组是存储多个字符串的数据结构,其本质是一维字符数组的集合。定义格式为char数组名[行数][列数],其中行数表示字符串个数,列数表示每个字符串的最大长度(需包含\0)。初始化支持完全初始化、简化初始化和默认初始化三种方式,推荐使用直接赋值字符串的简化方式。访问元素可通过行+列下标访问单个字符,或仅用行下标访问整个字符串。常用操作包括strcpy拷贝、strcat拼接和strcmp比较。实际应用包括存储姓名列表、用户输入处理和字符串排序等。需注意列数要足够、避免越界访问,并配合字符串处理函数使用。
2026-01-16 23:14:13
802
原创 C 语言:一维字符型数组
本文系统介绍了C语言中一维字符型数组的核心概念与使用方法。重点包括:数组定义与初始化(需包含'\0')、存储特性(连续空间与'\0'标识)、字符串输入输出函数(scanf/gets/printf/puts)以及string.h库函数(strlen/strcpy/strcat/strcmp)。特别强调了常见错误如忘记'\0'、数组越界、错误比较字符串等问题,并提供了遍历、统计长度等实用技巧。正确使用字符数组需注意内存安全与字符串完整性,建议初始化时预留足够空间并显式处理字符串结尾标识。
2026-01-15 18:29:47
942
原创 C语言中数组的定义操作与常见算法
本文系统介绍了数组的基础概念与操作。数组作为存储同类型元素的有序集合,具有连续性、有序性和单一性特征,可分为一维、二维及多维数组。重点讲解了一维数组的定义、初始化和基本操作,包括输入输出、求最大值、元素倒置等常见算法,并详细对比了冒泡排序与选择排序的实现原理。文章还总结了数组使用的常见问题,如越界访问、初始化错误等,并给出相应解决方案。通过完整代码示例,帮助读者掌握数组这一重要数据结构的核心应用。
2026-01-14 20:40:26
1157
原创 C 语言中循环结构 + GDB 调试
本文总结了C语言循环结构和GDB调试的核心知识点。循环结构部分详细讲解了for、while和do...while循环的使用场景,并提供了鸡兔同笼、99乘法表和水仙花数3个经典案例。GDB调试部分介绍了基本调试流程和常用指令,包括编译时添加-g参数、设置断点、单步执行等实用技巧。这些内容可以帮助初学者快速掌握C语言循环控制结构和调试方法,提升编程效率。
2026-01-13 20:06:01
584
原创 C 语言常用输入输出函数详解(puts/gets/ 流程控制)
本文系统介绍了C语言中的输入输出函数和分支结构。详细讲解了puts和gets函数的用法、注意事项,对比了puts与printf、gets与scanf的区别。在流程控制方面,重点阐述了if分支(简单、阶梯、嵌套)和switch分支的语法结构、核心规则及典型应用场景,强调了关系运算符与逻辑运算符的使用要点。文章还指出了常见编程错误(如误用=代替==、switch忘记break等),并提供了实用代码示例,帮助开发者掌握C语言基础编程技巧。
2026-01-12 18:57:35
698
原创 C语言中常用的输入输出函数
本文介绍了C语言中常用的输入输出函数。字符处理函数包括putchar(输出单个字符)和getchar(输入单个字符),通过ASCII码转换实现大小写转换。格式化输入输出函数printf和scanf支持多种数据类型和格式控制:printf使用转义字符(如\n)、格式控制符(如%d)和修饰符(如%05d)控制输出格式;scanf需注意非控制符匹配、取地址符&的使用以及空格处理规则。文章还提供了大小写转换、四则运算和圆面积计算等实践示例,帮助掌握这些基础但重要的I/O函数使用方法。
2026-01-11 22:21:00
529
原创 C 语言中字符常量与变量的定义使用
字符常量是用单引号包裹的单个字符,本质是该字符对应的 ASCII 码值,占用 1 字节内存空间,也是嵌入式开发中存储单个指令、按键值的核心形式。字符常量的语法格式为单引号包裹单个字符,合法的示例包括 'a'、'5'、'+'、'\n',其中 以"\''开头的是转义字符,在串口换行场景中经常使用;需要注意的是,单引号内只能包含一个字符,像 'ab' 这种写法是错误的,双引号包裹的 'a' 也不属于字符常量,而是字符串常量。
2026-01-09 19:00:52
841
原创 吃透C语言编译流程与基本数据类型核心知识
常量是程序运行中值不能修改的量,按类型分类如下:整形常量有三种表示形式,十进制是默认的 int 类型,八进制以 0 开头,十六进制以 0x/0X 开头,还可以通过后缀 u/U 表示无符号、l/L 表示长整型,比如 123 是十进制整型常量,077 是八进制,0X29 是十六进制。浮点型常量分为小数形式和指数形式(e/E),比如 3.14 是小数形式,3.14e-15 是指数形式,默认是 double 类型,加后缀 f/F 可表示 float 类型。二进制遵循逢二进一的规则,是计算机底层存储数据的核心进制;
2026-01-08 20:51:37
1354
原创 Linux 基础核心笔记
本文记录了嵌入式开发新手第一天的Linux学习要点。主要内容包括:1)虚拟机基础操作与终端使用技巧;2)Linux核心命令如ls、mkdir、rm等的使用场景及注意事项;3)树形目录结构解析和路径表示方法;4)Linux下C语言开发的"编写-编译-执行"三步骤流程。文章为初学者提供了实用的Linux入门指南,特别强调了危险命令的使用注意事项和开发环境的搭建方法。
2026-01-07 19:56:56
665
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅