首页 > 其他分享 >单向链表与双向链表

单向链表与双向链表

时间:2024-09-04 21:53:06浏览次数:9  
标签:遍历 单向 next 链表 双向 节点 指针

内存泄漏:手动申请的空间没有得到及时释放,导致内存发生内存泄漏(循环)

        可以使用valgrind命令判断有无发生内存泄漏

快慢指针法找中间节点:

链表倒置:

 

链表插入排序:

 

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

一、单向链表:

        1.单向链表的每个节点包含两部分信息:一部分是存储的数据(data),另一部分是指向列表

中下一个节点的指针(next)。这意味着在单向链表中,你只能从头节点开始,按照链表的顺序逐

个访问节点,直到到达链表的末尾(即遇到指向null的指针 )

        2.操作:

                插入:在单向链表中插入节点通常需要遍历到目标位置的前一个节点,然后修改其next

指针指向新节点,新节点的next指针再指向原位置的后一个节点。


                删除:同样需要遍历到目标节点的前一个节点,然后修改其next指针,使其跳过目标节

点,直接指向目标节点的下一个节点。


                遍历:只能从头节点开始,逐个访问每个节点,直到末尾。
                优点:实现简单,内存利用率较高(每个节点只存储一个指针)。

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

三、双向链表:

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

        2.操作:

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

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

标签:遍历,单向,next,链表,双向,节点,指针
From: https://blog.csdn.net/chdtu/article/details/141905181

相关文章

  • 23合并 K 个升序链表
    我嘞个二维数组有点小夸张了哈这个题目我最开始看就回想两个有序链表的排序,但是如果这样排,那要排k次,每次排序还有相应时间复杂度,工程量之大,相当恐怖那么这个时候我们就想起来去用堆最小堆,非子叶节点小于子叶节点,可以导致根节点是最小的,那么我们只需要把所有数据全部插......
  • 关于Java链表的一些操作以及力扣原题刷刷刷——反转链表、删除链表的倒数第N个节点
    1、反转链表1.1环境准备,可以自己先尝试实现/***@AuthorMiku*@Date2024/09/0209:54*@DescriptionTODO*@Version1.0*/publicclassSolution{staticclassListNode{intval;ListNodenext;ListNode(intval){......
  • 数据结构--链表
    单向链表链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。相较于数组,链表有以下优点:逻辑结构(1)链表采用动态内存分配的方式,在内存中不连续(2)支持动态增加或者删除元素(3)需要时可以使用malloc或者new来申请内存,不用......
  • 【数据结构和算法实践-链表-LeetCode23-合并K个有序数组】
    合并K个有序数组题目MyThought代码示例JAVA-8题目合并K个有序数组MyThought一、将ListNode放入PriorityQueue中1.1、设置PriorityQueue的比较器规则1.2、将ListNode[]放入priorityQueue二、再将数据依次弹出放到ListNode中代码示例JAVA-8publicListNod......
  • 链表:如何利用“假头,新指针,双指针”解决链表问题
    Java学习+面试指南:https://javaxiaobear.cn链表是一种线性数据结构,其中的每个元素实际上是一个单独的对象,而所有对象都通过每个元素中的引用字段链接在一起。链表是一种物理存储单元上非连续、非顺序的存储结构,其物理结构不能只管的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过......
  • DC-DC双向同步35V升降压CC/CV控制器具有展频负载电流监测
    概述:PC1035是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达35V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1035集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输......
  • PC电源,USB Type-C通用型双向同步升降压控制器支持5V驱动可编程输出输入电流限制
    概述:PC1045是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达45V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1045集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输......
  • 65V高压高效宽频双向同步升降压恒压恒流控制制QFN32L小体积封装
    PC1065是一款同步升降压控制器,适用于驱动高效电源转换器中的MOSFET或氮化镓(GaN)等功率器件。它支持高达65V的宽输入和输出电压范围,并可在降压、升降压和升压模式之间无缝转换。PC1065集成了具有UVLO保护功能的上管和下管栅极驱动器。它提供可编程电感峰值电流限制和输出平......
  • CSP-J初赛知识点总复习( 3.3链式栈 3.4链式队列3.5链表习题)
    链式栈:(代码)#include<bits/stdc++.h>usingnamespacestd;//栈元素structStack{intdata;structStack*next;};Stack*top=NULL;//栈顶指针//入栈voidpush(intx){Stack*p=newStack;p->data=x;p->next=top;top=p;//修......
  • OpenHarmony中的HDF单链表及其迭代器
    概念为了性能考虑,嵌入式系统一般使用C语言进行开发,由于C语言标准库没有封装链表,所以嵌入式系统一般自己设计和实现链表这种数据结构。单链表是链表中的一种,本文描述OpenAtomOpenHarmony(以下简称“OpenHarmony”)中HDF软件模块自己定义的单链表,并学习其设计和实现方法。其中包含一些......