自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux外设驱动开发1 - 单总线驱动开发__dht11

本文介绍了基于单总线协议的DHT11温湿度传感器驱动开发过程。首先阐述了单总线协议的特点(半双工通信、主从结构、寄生供电)及DHT11传感器的技术参数(温湿度测量范围、精度、工作电压等)。重点分析了DHT11的通信时序,包括主机启动信号、传感器响应和数据传输格式(40位数据+校验和)。开发过程分为设备树配置(GPIO引脚定义)、驱动层实现(复位信号生成、数据读取校验)和应用层程序(温湿度数据显示)三部分,通过Linux miscdevice框架注册字符设备,最终在嵌入式平台上完成温湿度数据的采集与显示。整个

2025-10-20 23:22:20 612

原创 uboot重启大法配置流程

摘要:针对imx6ull开发板uboot无法中断的问题,通过重新下载uboot并配置环境变量解决。具体步骤包括:1)通过USB_OTG接口下载uboot;2)切换至USB_TTL接口配置网络参数;3)设置NFS挂载参数和启动命令。关键配置包括设置板子IP(192.168.1.50)、网关(192.168.1.1)和TFTP服务器IP(192.168.1.100),并定义bootargs和bootcmd实现内核镜像和设备树的网络加载启动。

2025-10-10 18:52:04 674

原创 知识点-lcd显示2->lvgl库、图形设计

LVGL是一个轻量级开源图形库,需要依赖Framebuffer驱动进行底层显示。移植过程包括:1)将库文件导入虚拟机并修改配置参数;2)配置触摸屏(电阻屏需校准);3)修改设备树并编译。图形设计时需注意中文显示问题,需手动添加字体文件。开发流程:使用图形设计软件设计界面并导出代码,将生成的GUI文件复制到虚拟机项目目录,修改main.c添加全局变量和调用函数,最后编译运行。运行前需确保加载正确的内核模块,通过minicom挂载后执行生成的可执行文件。

2025-10-09 20:56:06 254

原创 虚拟机双网卡设置

摘要:虚拟机采用双网卡配置,NAT模式用于公网访问,桥接模式连接开发板作为TFTP/NFS服务器。配置步骤包括:1)添加两个适配器,分别设为NAT和桥接模式;2)在虚拟网络编辑器中指定桥接到有线网卡,NAT子网设为192.168.78.0;3)配置ens33自动获取IP,ens36设为静态IP 192.168.1.100;4)调整路由表,删除默认路由后添加新网关;5)测试网络连通性,确保NAT能访问外网,开发板(192.168.1.50)能ping通。配置完成后需重启生效。

2025-10-08 21:30:27 284

原创 知识点-lcd显示1->frame buffer、字库

本文介绍了帧缓冲(FrameBuffer)的基本概念及其在嵌入式系统中的应用实现。帧缓冲是图形硬件抽象层,通过内存映射方式控制屏幕像素显示。文章详细阐述了分辨率、色深等关键参数,并以i.MX6ULL开发板为例说明硬件特性(800*480分辨率,24位RGB)。重点讲解了帧缓冲的编程实现,包括设备初始化、参数获取、内存映射等核心步骤,并提供了绘制点、图片和文字的代码实现方案。针对汉字显示,介绍了字库创建与UTF-8字符串显示方法。文中包含完整的代码示例,涵盖从底层设备操作到上层应用开发的完整流程,为嵌入式图形

2025-10-08 21:04:50 566

原创 硬件开发2-ARM裸机开发3-I.MX6ULL - 时钟、定时器

i.MX6UL嵌入式系统时钟与定时器机制解析:系统采用多级时钟树架构,由外部晶振经PLL倍频和分频器产生各模块所需时钟。提供两种定时器:EPIT(32位向下计数器,适用于周期中断)和GPT(32位向上计数器,支持输入捕获/输出比较)。时钟系统通过CCM模块管理,包含ARM内核时钟(可调至1056MHz)、AHB总线时钟(132MHz)和IPG外设时钟(66MHz)。关键配置涉及PLL锁定、分频系数设置及时钟源切换,需注意操作顺序以避免系统故障。定时器选择取决于应用场景,EPIT适合简单定时,GPT适用于复杂

2025-09-28 20:24:15 803 2

原创 硬件开发2-ARM裸机开发4-IMX6ULL - 串口UART

摘要:数据传输方式可分为单工、半双工和全双工三种类型,各具特点和应用场景。数据传输组织方式包括串行和并行通信,时序控制方式有同步和异步通信。串口通信属于异步串行通信,其电气表达标准包括TTL、RS-232、RS-485和RS-422,它们在电平范围、抗干扰能力和应用场景上存在差异。串口初始化需设置比特率相关参数,通过公式计算寄存器值。此外,还涉及makefile的升级优化。

2025-09-15 21:42:35 691

原创 硬件开发2-ARM裸机开发3-IMX6ULL - 引入中断

摘要:本文介绍了通过按键控制LED和蜂鸣器的实现过程,分析了轮询模式的响应延迟问题,提出引入中断机制以提高响应速度。详细阐述了中断的概念、流程及GIC中断控制器的功能,包括SGI、PPI、SPI三种中断类型。同时介绍了协处理器CP15在访问GIC寄存器时的关键作用,以及异常向量表的配置方法。最后给出了中断模式的具体代码实现方案(interrupt.c、interrupt.h、start.S),解决了轮询模式下的响应延迟问题。

2025-09-14 20:45:13 829

原创 硬件开发2-ARM裸机开发2-I.MX6ULL-main点灯

本文介绍了基于ARM架构的嵌入式开发流程,重点讲解了LED控制程序的实现与优化过程。开发过程从编写启动文件start.S开始,包含异常向量表配置、模式切换和栈指针初始化。通过main函数调用外设接口控制LED,使用volatile关键字防止编译器优化。文章详细说明了Makefile的编译规则、交叉编译工具链配置以及SP寄存器的作用。随后展示了代码优化过程,包括时钟配置、硬件寄存器定义分离、功能模块封装等。最后介绍了BSP工程管理和链接脚本(.lds)的编写要点,确保启动代码的正确执行顺序和内存布局管理。整个

2025-09-12 00:07:57 921

原创 硬件开发2-ARM裸机开发1-I.MX6ULL - 汇编点灯

本文介绍了基于i.MX6ULL处理器的LED控制实现流程。首先阐述了GPIO(通用输入输出)的基本原理,包括数据寄存器、方向寄存器等关键概念。重点讲解了IOMUX6ULL引脚复用机制,通过控制寄存器实现多路复用功能。随后详细说明了从汇编代码编写到程序烧录的完整开发流程:包括异常向量表设置、GPIO初始化(复用配置、电器属性设置、方向控制)、LED开关函数实现,以及编译链接、格式转换和SD卡烧录的具体操作步骤。最后提供了Makefile自动化编译脚本,简化了开发过程。整个方案通过GPIO3控制LED状态,实现

2025-09-10 21:32:57 960

原创 硬件开发2-汇编2(ARMv7-A)- 裸机开发

本文总结了ARM汇编指令集的关键内容,包括分支跳转(b/bl/bxlr)、栈操作(stmdb/ldmfd)、数据加载(ldr)等核心指令的用法和特点。重点介绍了ARM汇编调用C语言的流程,包括参数传递规则(前4个使用R0-R3,其余压栈)、返回值处理方式,以及编译错误的解决方法。同时列举了ARM的7种异常类型及其触发条件和优先级。这些内容为理解ARM架构的程序控制流、函数调用机制和异常处理提供了实用参考。

2025-09-09 23:11:50 803

原创 硬件开发2-汇编1(ARMv7-A)- 基本概要

本文概述了ARM汇编语言的基础知识和关键操作。主要内容包括:ARM架构特点(支持大/小端存储,默认小端)、处理器工作模式、寄存器组织和程序状态寄存器(CPSR)。重点介绍了异常处理机制,包括异常向量表的结构和功能。在汇编实现部分,详细说明了伪操作(如area、code32)和常用指令(MOV、ADD、SUB、LDR等)的语法格式和使用注意事项,特别强调了立即数的处理规则和条件标志位(NZCV)的应用。最后提供了多个实践练习,包括数值比较、跳转指令应用和循环求和等基础编程任务。这些内容构成了ARM汇编编程的核

2025-09-09 08:00:00 1091

原创 硬件开发2-ARM基本概要

一、嵌入式一、嵌入式1、核心定义:以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统。能够根据用户需求(功耗、体积、可靠性)进行灵活裁剪。二、计算机系统1、软件的基本组成系统软件、应用软件2、硬件基本组成运算器、控制器、存储器、输入设备、输出设备(1)kernal内核,操作系统最核心的部分关键工作硬件资源的管理:CPU调度、内存管理、设备驱动接口系统服务的提供:提供最基础的系统调用接口,让上层的应用软件能调用硬件资源(2)内核与CPU之间的关系。

2025-09-08 22:06:13 714

原创 硬件开发1-51单片机4-DS18B20

本文介绍了DS18B20温度传感器的驱动代码实现方法。DS18B20是一款单总线数字温度传感器,具有测量范围-55℃~125℃、精度±0.5℃的特点,支持寄生供电。文章详细阐述了其硬件连接方式(P3.7引脚需接上拉电阻)和软件实现,包括复位、读写操作的核心函数(ds18b20_Reset、write_ds18b20、read_ds18b20)以及温度获取函数get_tmp的实现原理。通过UART串口将采集的温度值输出,完整代码包含main.c、ds18b20.c、uart.c和delay.c等模块。使用时需

2025-09-07 22:20:43 1094

原创 硬件开发1-51单片机3-串口

UART通信技术摘要 UART是一种全双工异步串行通信接口,包含RXD和TXD两条独立信号线,实现双向数据传输。其特点包括:采用LSB低位优先传输、串行传输(抗干扰强、成本低)、波特率可调(2400-115200bps)、支持奇偶校验。通信时序包含起始位(低电平)、8位数据、校验位和停止位(高电平)。与I2C(半双工)、SPI(同步)相比,UART无需时钟线,通过预置相同波特率实现同步。实际应用需配置SCON/PCON寄存器、定时器初值及中断控制,典型参数组合如9600,8,N,1。开发中需注意HEX/文本

2025-09-04 21:46:41 661

原创 硬件开发1-51单片机2-按键、中断

本文介绍了51单片机基础外设功能与应用。首先阐述了GPIO的输入/输出模式及其水龙头类比;其次说明按键检测原理;重点讲解了中断概念、5种中断源及处理流程,包括寄存器配置方法;详细介绍了定时器工作原理及1ms定时的实现;最后解析了PWM波形生成原理和蜂鸣器驱动方式,区分了有源/无源蜂鸣器的特点。全文系统性地介绍了51单片机核心外设模块的工作原理与配置方法,为单片机开发提供了实用指导。

2025-09-03 22:41:56 1022

原创 硬件开发1-51单片机1

本文介绍了嵌入式系统和51单片机的核心概念。嵌入式系统是以应用为中心的专用计算机系统,通过软硬件裁剪实现高效定制,包含处理器、存储器和操作系统等组件。51单片机作为典型嵌入式处理器,采用冯诺依曼架构,集成CPU、RAM、ROM及外设接口,具有成本低、功耗小的特点。文章详细解析了单片机内部结构(定时器、PWM、UART等)、位运算操作、程序开发流程(Keil环境配置到烧录),以及LED驱动原理(共阳/共阴接法)。最后通过点灯、呼吸灯和数码管显示等实例,展示了单片机在控制领域的应用。全文系统梳理了嵌入式开发的基

2025-09-02 21:07:37 1100

原创 网络编程5-数据库、sqlite3数据库

摘要:本文介绍了数据库的基本概念与SQLite3操作。信息是现实世界的反映,数据是其载体,数据库通过数据模型规范化组织数据。SQLite3是轻量级关系数据库,支持基本SQL操作:创建/删除表、增删改查数据,以及高级查询(WHERE、AND/OR、LIKE等)。重点讲解了SQLite3的C语言接口函数:sqlite3_open(打开数据库)、sqlite3_exec(执行SQL语句及回调处理)、sqlite3_close(关闭数据库)。编译时需链接sqlite3库,适用于嵌入式等轻量级应用场景。

2025-09-01 10:46:56 1254

原创 网络编程4-并发服务器、阻塞与非阻塞IO、信号驱动模型、IO多路复用..

本文系统介绍了并发服务器与IO模型的实现技术。在并发服务器方面,分析了单循环顺序处理与多进程/多线程方案的优缺点,后者虽能实现真正并发但存在资源开销大的问题。在IO模型部分,详细阐述了五种常见模型:阻塞IO(简单但效率低)、非阻塞IO(需轮询开销大)、信号驱动IO(异步但功能有限)、异步IO(真正全异步)以及IO多路复用(高效处理高并发)。重点剖析了select、poll、epoll三种多路复用技术的实现原理、函数接口和性能差异,特别对epoll的水平触发和边缘触发模式进行了代码级对比。最后给出了不同场景下

2025-08-30 09:04:07 654

原创 网络编程3-UDP协议

本文介绍了UDP协议的核心特点及其编程应用。UDP具有无连接、不可靠、数据报形式、开销小等特点,其数据报由8字节固定首部和可变长度数据部分组成。重点展示了基于UDP的C/S模型实现,包括客户端和服务器的函数接口设计,并通过一个聊天室示例详细说明了实现过程:采用数组管理在线客户端信息,定义登录、聊天、退出三种状态,使用结构体封装消息内容。服务器负责消息转发,客户端通过线程实现收发功能,并处理聊天室满员等特殊情况。代码示例展示了完整的UDP通信实现,包括头文件定义、客户端和服务器的核心逻辑。文章强调实际开发中需

2025-08-28 22:01:01 718

原创 网络编程2-TCP协议

本文系统地介绍了TCP协议的核心概念、连接机制及编程应用。主要内容包括:1)TCP的核心特点,如面向连接、可靠传输和字节流特性;2)三次握手和四次挥手的详细过程及其作用;3)TCP粘包问题的成因和解决方案;4)TCP报文头重要标志位;5)TCP可靠性保障机制;6)TCP编程的C/S模型及关键函数接口。文章还提供了三个实践案例:基本通信、文件传输及解决粘包问题的自定义消息结构体实现,通过具体代码展示了TCP协议的应用。

2025-08-28 00:12:19 954

原创 网络编程1-基本概念、函数接口

本文摘要:网络通信基础与编程实践 网络基础概念: IP地址(点分十进制表示)和端口号(0-65535)的用途 TCP(可靠连接)与UDP(高效无连接)协议特点对比 OSI七层模型与TCP/IP四层模型对应关系 核心编程接口: socket()函数创建通信端点 bind()绑定IP和端口 send()/recv()和sendto()/recvfrom()实现数据收发 字节序转换函数htons()等 实践示例: TCP客户端/服务器实现流程 包含socket创建、连接、绑定监听等关键步骤 配合网络调试工具完成基

2025-08-25 22:33:19 894

原创 软件编程3-进程和线程4-进程间通信-信号、消息队列、共享内存、信号灯

本文介绍了Linux系统中的进程间通信机制,主要包括信号、消息队列、共享内存和信号灯四种方式。信号用于进程间异步通信,介绍了常见信号类型及处理方式(缺省、忽略、捕捉)。消息队列通过IPC对象实现进程间数据传输,详细说明了其操作流程和接口函数。共享内存作为最高效的通信方式,通过映射内核空间实现进程间数据共享。信号灯用于同步控制,配合共享内存使用。文中提供了三个实践案例:消息队列实现双向聊天、共享内存实现读写操作以及共享内存与信号灯结合实现同步读写。每个案例都包含完整的代码实现和运行结果展示。

2025-08-20 09:31:46 871

原创 软件编程3-进程和线程4-进程间通信1-管道

本文介绍了Linux系统下进程间通信的基本概念和实现方式。主要内容包括:1)进程空间独立,是资源分配的最小单元;2)三种传统通信方式:管道(无名/有名)、信号、消息队列等系统调用;3)重点讲解了管道机制,无名管道只能用于亲缘关系进程,有名管道通过命名文件实现任意进程通信;4)给出了一个使用有名管道实现双进程聊天的代码示例,包含管道创建、读写线程以及同步处理等关键实现。该方案展示了进程间通信的实际应用方法。

2025-08-18 20:30:26 606

原创 软件编程3-进程和线程3-线程传参、通信,信号量

本文介绍了多线程编程的关键技术。在参数传递方面,可通过pthread_create的第四个参数向线程传递参数。线程属性分为可连接(需手动回收)和分离(自动回收)两种,分别通过pthread_attr_init等接口设置。线程通信主要通过共享全局变量实现,但需使用互斥锁(pthread_mutex系列函数)解决资源竞争问题。文章还分析了死锁的四个必要条件及避免方法,并介绍了信号量(sem_init等函数)的同步机制。最后通过ABC顺序打印的示例程序,演示了信号量的实际应用,其中使用sem_wait和sem_p

2025-08-18 10:45:47 619

原创 利用标准IO实现寻找文件中字符出现最多次数

2)数组利用元素下标比大小时,比较前假设第一位元素为最大或者最小,后续在循环内比较的对象是假设的这一位和 ‘i’ 对应的元素下标,满足if条件时则更新下标。再接收字符,将接收到的字符让与之对应的数组内的值+1。将文件内容接收完毕之后,选数组内元素值的最大值,就是出现过多少次,对应的序号就是就是哪个字符。3)fread函数接口,成功的返回值是读取到的对象个数,类型是size_t ,虽然这个类型是int型,我们也成size_t的意义是不再是简单的数字而是赋予这个数字是一个大小→读取到的对象的个数。

2025-08-17 16:00:22 179

原创 练习—‘‘遍历目录实现文件内容的拷贝‘‘

解3:求助后,通过循环遇见数字cnt++,结束后比较cnt和strlen(文件名)的长度是否一致,判断是否为数字文件。题目的 目的就是要内容写到文件里,所以先打开文件,找到要写入文件的内容,写进去然后再关掉文件。注意:返回值不能用指针返回,即使返回了指向的地址,函数体结束后,指向的地址内容就被回收了。-解2: 尝试过想法封装函数,有想法,但是不太会畏惧就放弃了(这个简单,可学)☆。②封装一个函数筛选找到该目标文件符合所要内容,写入m文件的内容(int型)(传参,传字符数组,name,pid,name)

2025-08-16 17:37:11 759

原创 软件编程3-进程和线程2-函数传参、线程概要、函数接口

本文摘要:线程是轻量级进程,共享进程资源但独享栈区(默认8M),是CPU调度的最小单元。与进程相比,线程切换开销更小。线程函数包括创建(pthread_create)、获取ID(pthread_self)、退出(pthread_exit)和回收(pthread_join)。练习案例展示了4个不同间隔打印任务的线程实现,包括采集(1s)、存储(2s)、显示(5s)和日志(10s)线程,通过makefile编译执行。线程结束需回收空间避免僵尸线程。

2025-08-16 09:20:33 250

原创 软件编程3-进程和线程1-进程概要、命令、函数接口

本文摘要:进程是程序动态执行的过程,包含创建、调度和消亡阶段。每个进程拥有独立的0-4G虚拟内存空间,分为用户空间(文本段、数据段、堆栈区)和内核空间。操作系统通过MMU实现虚拟地址到物理地址的转换,多进程在宏观上并行运行,微观上通过时间片轮转等调度算法实现任务切换。文章介绍了常用进程命令(top、ps、kill等)和关键函数接口(fork、wait等),特别强调要避免产生僵尸进程,即子进程结束后父进程未及时回收资源的情况。可通过父进程主动回收或让init进程收养孤儿进程来解决此问题。

2025-08-15 09:05:53 882

原创 软件编程2-IO3-文件IO、目录IO、时间相关函数接口

本文介绍了Linux系统下的文件IO和目录IO操作。文件IO部分详细讲解了基本概念、系统调用与库函数的区别,以及open/close/read/write/lseek等核心函数的使用方法。通过代码示例演示了文件偏移量定位和文件拷贝的实现。目录IO部分简要说明了目录操作的基本流程。此外,还介绍了时间相关的三类时间表示方式(time_t、struct tm和字符串时间)及其应用场景。文章内容涵盖Linux系统编程中的基础IO操作,为开发者提供了实用的编程参考。

2025-08-13 21:02:12 847

原创 软件编程2-IO2-标准IO

本文介绍了C语言文件操作相关函数和编程实践。主要内容包括:1)文件读写函数fwrite和fread的使用;2)文件流定位函数fseek、ftell和rewind;3)5个文件操作练习:统计文件行数、实现文件拷贝、获取文件长度、读取BMP图片宽高、图片拷贝。每个练习都提供了完整的代码实现,涉及文件打开、读写、定位等操作,并包含错误处理。文中特别强调了文件操作中的注意事项,如行数统计从1开始、文件拷贝时的数据完整性问题等。

2025-08-12 18:29:38 777

原创 软件编程2-IO1-标准IO

本文介绍了Linux系统中的IO操作基本概念和标准IO。主要内容包括:1)IO指计算机与外部设备的数据交换,Linux中所有设备都视为文件,分为块设备、字符设备、目录、普通文件等类型;2)标准IO用于操作普通文件(ASCII码文件和二进制文件),提供fopen/fclose等接口,操作流程为打开-读写-关闭;3)标准IO具有缓存机制,分为全缓存(4K)、行缓存(1K)和不缓存三种类型,不同缓存策略影响IO效率和实时性。文中还介绍了标准输入/输出/错误流(stdin/stdout/stderr)及其缓存特性。

2025-08-11 21:54:48 679

原创 软件编程1-shell命令

Shell命令是用户与Linux内核交互的桥梁,既能保护内核安全,又能解释执行用户指令。主要介绍了基础命令(如ls、cd等)、文件操作命令(cat、head等)、通配符匹配、管道和重定向功能,以及find、whereis等查找命令。此外还讲解了shell脚本编程,包括脚本编写步骤、输入输出处理、变量使用和流程控制结构。文章系统梳理了Shell命令的使用方法和脚本编程要点,适合Linux初学者快速掌握Shell操作基础。

2025-08-10 22:22:31 898

原创 数据结构5-哈希表

本文介绍了两种常见的数据结构与算法:哈希表和排序算法。哈希表部分详细讲解了其基本概念(哈希算法、哈希碰撞)和实现过程,包括创建、插入、遍历、查找和销毁等操作,通过键值映射实现O(1)时间复杂度的快速存取。排序算法部分则概述了冒泡排序、选择排序、插入排序、希尔排序和快速排序的原理及时间复杂度特性,其中快速排序和希尔排序的时间复杂度最优为O(nlogn),同时还介绍了二分查找算法。全文通过理论分析和代码示例相结合的方式,系统性地阐述了这些常用数据结构和算法的核心要点。

2025-08-08 18:37:54 741

原创 数据结构4-二叉树

摘要:本文系统介绍了二叉树的基本概念和操作。主要内容包括:1)二叉树的基本概念,包括节点类型(根节点、分支节点、叶子节点)、树的高度/深度/层数定义;2)完全二叉树和满二叉树的特性及区别;3)二叉树的两种遍历方式:深度优先(前序、中序、后序)和广度优先(层序)遍历的递归实现;4)完全二叉树的创建、遍历和销毁操作;5)非完全二叉树的创建及高度计算。文章通过代码示例详细展示了二叉树的各种操作实现方法,为理解二叉树数据结构提供了完整的技术参考。

2025-08-08 13:40:47 569

原创 数据结构4-栈、队列

本文系统介绍了栈和队列两种基础数据结构。栈采用"先进后出"原则,分为顺序栈和链式栈,详细说明了压栈、出栈等基本操作及其实现方法。队列遵循"先进先出"规则,同样分为顺序队列和链式队列,重点讲解了循环队列的判满条件(牺牲一个存储空间)和操作实现。最后通过编程练习展示了如何用链式栈(需两次压栈)和链式队列(直接实现)来完成输入输出顺序一致的功能,提供了完整的代码实现方案。文章内容涵盖数据结构基本概念、分类及具体实现,具有较强的实用性。

2025-08-07 13:06:27 1097

原创 数据结构3-双向链表、循环链表

本文详细介绍了三种链表结构的实现:双向链表、循环链表和内核链表。主要内容包括:1. 双向链表的节点定义、创建、头插/尾插法、遍历、查找、修改、删除和销毁操作的C语言实现;2. 循环链表的特殊处理(首尾相连)及各操作的实现差异;3. 内核链表的特点(节点嵌入数据结构)及其与传统链表的区别。通过代码示例和操作步骤说明,系统讲解了每种链表的基本操作原理和实现要点,包括指针处理、内存管理等关键技术细节。

2025-08-05 19:37:05 959

原创 数据结构2-单向链表

本文详细介绍了链表的11种常见操作实现方法:1. 链表元素查找(遍历查找)2. 链表节点修改(遍历修改)3. 尾插法插入节点4. 链表销毁(释放所有节点)5. 查找中间节点(快慢指针法)6. 查找倒数第k个节点7. 删除未知头节点的中间节点(数据覆盖法)8. 链表倒置(头插法)9. 链表冒泡排序10. 链表选择排序11. 判断链表是否有环及环相关操作(快慢指针法)。每种操作均包含步骤说明和代码实现,涵盖链表的基础操作与高级应用。

2025-08-04 20:12:38 1085

原创 数据结构1-概要、单向链表

本文系统介绍了数据结构中的链表实现。首先概述数据结构的基本概念,包括时间复杂度、空间复杂度等核心指标,以及数据结构的主要分类。重点讲解了链表的特点、分类及实现方法,详细剖析了单向链表的节点定义、创建、头插法、遍历和删除等关键操作,并提供了完整的C语言代码实现。文章还通过对比顺序链表与链表的优缺点,突出链表在动态内存管理方面的优势。最后给出链表操作的实践练习建议,包括多文件编程的实现方法。全文内容丰富,代码示例详实,为学习链表这一重要数据结构提供了清晰的指导框架。

2025-08-02 19:04:09 1272

原创 C语言15-构造数据类型、位运算符、内存管理

本文摘要:文章系统介绍了C语言中结构体、共用体、枚举和位运算等核心概念。重点讲解了结构体的定义、初始化、内存对齐规则及传参方式;对比了共用体与结构体的存储差异;阐述了枚举类型的特性及位运算符的使用场景。同时涵盖了堆区内存管理、内存泄漏等关键问题,通过示例代码演示了各种数据结构的实际应用,为C语言开发者提供了全面的参考指南。

2025-07-30 19:25:02 772

空空如也

空空如也

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

TA关注的人

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