首页 > 其他分享 >嵌入式day38

嵌入式day38

时间:2024-09-04 21:21:15浏览次数:13  
标签:遍历 day38 单向 嵌入式 链表 next 节点 指针

内存泄漏:

手动申请的空间没有及时释放,导致系统发生内存泄漏

valgrind:在程序运行过程中,测试是否发生内存泄露

快慢指针法:

链表倒置:

链表插入排序:

双向链表:

双向链表与单向链表的区别:

单向链表(Singly Linked List)

  • 结构:单向链表的每个节点包含两部分信息:一部分是存储的数据(data),另一部分是指向列表中下一个节点的指针(next)。这意味着在单向链表中,你只能从头节点开始,按照链表的顺序逐个访问节点,直到到达链表的末尾(即遇到指向null的指针)。

  • 操作

    • 插入:在单向链表中插入节点通常需要遍历到目标位置的前一个节点,然后修改其next指针指向新节点,新节点的next指针再指向原位置的后一个节点。
    • 删除:同样需要遍历到目标节点的前一个节点,然后修改其next指针,使其跳过目标节点,直接指向目标节点的下一个节点。
    • 遍历:只能从头节点开始,逐个访问每个节点,直到末尾。
  • 优点:实现简单,内存利用率较高(每个节点只存储一个指针)。

  • 缺点:只能单向遍历,某些操作(如删除中间节点)需要遍历。

双向链表(Doubly Linked List)

  • 结构:双向链表的每个节点包含三部分信息:存储的数据(data)、指向前一个节点的指针(prev)和指向下一个节点的指针(next)。这种结构允许从两个方向遍历链表。

  • 操作

    • 插入:与单向链表类似,但在插入新节点时,需要同时设置新节点的prev和next指针,以及相邻节点的指针。
    • 删除:直接修改目标节点前后节点的指针,使其绕过目标节点。
    • 遍历:可以从头节点开始正向遍历,也可以从尾节点开始反向遍历。
  • 优点:支持双向遍历,使得某些操作(如从尾部开始遍历或删除节点)更为高效。

  • 缺点:相比单向链表,每个节点需要额外的指针存储空间,内存利用率稍低。

标签:遍历,day38,单向,嵌入式,链表,next,节点,指针
From: https://blog.csdn.net/weixin_70572180/article/details/141904551

相关文章

  • 北京迅为RK3568开发板嵌入式学习之Linux驱动全新更新-CAN+网络设备
    iTOP-3568开发板采用瑞芯微RK3568处理器,22nm工艺制程,集成4核A55架构处理器和MaliG522EE图形处理器,支持4K解码和1080P编码,内置独立的NPU,可用于轻量级人工智能应用。 iTOP-3568开发板连接器版本:  iTOP-3568开发板邮票版本:     关注:北京迅为电子,在线观看 ---......
  • 影石嵌入式面试题及参考答案(7万字长文)
    内核启动的完整流程内核启动是一个复杂的过程,主要包括以下几个关键步骤:硬件上电与引导程序加载当系统上电后,首先由硬件执行一些初始化操作,如设置处理器状态、初始化内存控制器等。接着,引导程序(如U-Boot)被加载到内存中并开始执行。引导程序的主要任务是初始化硬件设备......
  • 嵌入式24千兆电口+4万兆光口管理型三层交换机RTL9301模块
    核心模块概述:嵌入式RTL9301模块可以支持4口万兆上联+24口千兆三层管理型以太网交换机,也就是最多可以提供24个10/100/1000自适应电口、4个10GbSFP+端口、1个console口、1个USB串口。完善的安全控制策略及CPU保护策略(CPUprotectpolicy)提高容错能力,保证网络的稳定运行和链路......
  • 推荐一个支持js的嵌入式设备开发平台
    可以通过vscode开发js,实时推送js代码到设备里运行,无需编译,支持屏幕,感兴趣的可以看看https://github.com/duoxianwulian/dxdop提供很多js库,可以控制gpio,pwm,蓝牙,nfc,二维码识别,人脸识别,网络,mqtt,tcp,看门狗,ui等等,支持多线程也支持多种设备。以下是一个代码示例和效果图示例点击查......
  • 【北京迅为】《stm32mp157开发板嵌入式linux开发指南》第五章 Ubuntu使用apt-get下载
         iTOP-STM32MP157开发板是基于意法半导体STARM双Cortex-A7核加单Cortex-M4核的一款多核异构处理器。Cortex-A7内核提供对开源操作系统Linux的支持,借助Linux系统庞大而丰富的软件组件处理复杂应用。M4内核上运行对于实时性要求严格的应用。         开......
  • 51c嵌入式~合集4
    一、CPU、MPU、MCU、SOC、SOPC、MCM的含义在嵌入式开发中,我们经常会接触到一些专业术语,例如CPU、MCU、MPU、SOC和MCM等,这些缩写代表了不同类型的电子处理单元,它们在消费电子、计算机硬件、自动化和工业系统中扮演着重要角色。whaosoft的嵌入式合集下面将介绍每个术语的基本含义和它......
  • 重头开始嵌入式第三十一天(IO多路复用)
    目录1.IO多路复用1.IO模型1、阻塞IO ===》最常用 默认设置2、非阻塞IO ===》在阻塞IO的基础上调整其为不再阻塞等待。 在程序执行阶段调整文件的执行方式为非阻塞:3.信号驱动io 4.并发  5.IO 多路复用 ===》并发服务器 ===》TCP协议1、select循环服务器 ===......
  • 51c嵌入式~STM32合集1
    #STM32的启动模式配置与应用三种BOOT模式    所谓启动,一般来说就是指我们下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存。用户可以通过设置BOOT1和BOOT0引脚的状态,来选择在复位后的启动模式,相关文章:详解STM32启动文件。MainFlashmemory是STM32内置的Flash,一......
  • 中新赛克嵌入式面试题及参考答案
    目录在编码中使用过的数据结构描述如何实现链表当发生哈希冲突时的解决策略在调用malloc分配内存后确保分配成功的操作解释TCP的三次握手过程及说明两次握手不可行的原因优化多个客户端同时连接到服务器的连接管理设计和实现心跳检测机制在项目中是否使用了锁机制......
  • 搭建嵌入式开发环境STM32 Keil 超详尽版
     需要准备的安装包目录一、Keil开发环境构建1、MDK531.exe2、注册机keygen3、ST-Link驱动程序4、芯片软件支持包Kel.STM32F1xx_DFP.2.4pack二、STM32CubeMX软件配置芯片1、JRE(根据自己的电脑的操作系统选择安装适合的版本)2、安装STM32CubeMX 资源链接:https://pan.......