当前位置: 首页 > news >正文

链表(Linkedlist)

序言

我们都了解链表是一种数据的存储结构,在Java使用中逻辑与c++,c语言数据结构别无二致,但主要由于Java中不存在指针的说法,从而导致在实现过程中的代码不同,所以在学习的过程中我们无需过于担心,逻辑都是想通的,此博客就是针对Java中的主流两种链表进行介绍。

一.单链表

定义:一组存储单元被用来存储线性表的数据元素 所构成的结构被称为链表

在Java中每个数据元素我们以链节称之,以下就是单链表的逻辑结构:

由上图所示每个链节都含有两部分内容    1.数据   2.下一个链节的地址

头结点:一般情况下,为了处理方便,在单链表的第一个节点之前附设一个节点或者就以第一个节点为头结点。添加头结点便于对链表的处理

单链表是非随机存取的存储结构,要取得第i个数据元素必须从头结点出发顺序寻找,也称为顺序存取的存取结构。

单链表的代码实现:

以上就是一个节点内部类的实现 ListNode next 就是指向下个节点

cur=cur.next;    //代表cur指向了cur的下一个节点

1.插入链表节点的代码 分为首插,尾插,和中间部分插入

2.查找操作:判断链表是否存在该数据

3.删除单个元素以及删除数据等于该数据的所有节点

4.计算单链表长度:

5.遍历链表:

6.清空链表:

结尾

单链表只要明确节点结构特点注重节点描述 访问时避免野地址的访问 单链表作为一种简单的数据结构 希望读者能够多联系即可掌握。

二.双链表

双链表是对单链表存储功能单向性缺点所设计的一种存储结构

顾名思义 在双链表节点中有两个指向域,一个指向直接后继,一个指向指向前驱,节点如下设计:

需要在双链表中为方便访问定义一个头结点与一个尾节点

1.双链表的插入:

2.双链表的查找:

3.双链表的删除:

4.双链表长度:

三,单链表与双链表的优缺点

单链表是一种链式存储的线性表,每个节点包含数据域和指向下一节点的指针域。优点是结构简单,存储开销小,易于实现插入和删除操作(特别是在链表头部或中间位置)。例如,要在单链表的头部插入一个新节点,只需让新节点的指针指向原头部节点,再将新节点设为头部即可。缺点是只能单向遍历,查找一个节点的前驱节点比较麻烦,时间复杂度高。
 
双链表每个节点有两个指针域,分别指向前驱和后继节点。其优点是可以双向遍历,方便查找前驱和后继节点,在某些操作上更灵活。比如在需要频繁前后移动的场景中效率更高。缺点是每个节点的存储开销较大,因为多了一个指针域,并且插入和删除操作的代码相对复杂,要同时处理前驱和后继节点指针的更新。

关于链表一些做题代码大家可以在此链接中查询:linkedList/src/linkedList.java · 王昕/Java进行之路 - 码云 - 开源中国

http://www.lryc.cn/news/481386.html

相关文章:

  • 信息安全工程师(79)网络安全测评概况
  • 保研考研机试攻略:python笔记(3)
  • 刘卫国MATLAB程序设计与应用课后答案PDF第三版
  • 【鉴权】Web 会话管理:Cookie、Session 和 Token 深度对比
  • ArkTS--应用状态
  • yolov8涨点系列之引入CBAM注意力机制
  • java标准JavaBean类
  • MATLAB界面设计全攻略:从基础入门到高级应用
  • JavaScript API部分知识点
  • 钉钉调试微应用整理2
  • C++初级入门(1)
  • group_concat配置影响程序出bug
  • 将Go项目编译为可执行文件(windows/linux)
  • IMS高压发生器维修高压电源维修XRG100/1000
  • 斯坦福泡茶机器人DexCap源码解析:涵盖收集数据、处理数据、模型训练三大阶段
  • RabbitMQ的DLX(Dead-Letter-Exchange 死信交换机,死信交换器,死信邮箱)(重要)
  • 【STM32F1】——舵机角度控制与TIM定时器
  • 想要成为独立游戏作者 :通关!游戏设计之道 2-1 HUD
  • sql专题 之 三大范式
  • node.js安装和配置教程
  • 定时器输入捕获实验配置
  • 【C/C++】memcpy函数的使用
  • spring-security(两种权限控制方式)
  • 【mongodb】数据库的安装及连接初始化简明手册
  • 【科普】卷积、卷积核、池化、激活函数、全连接分别是什么?有什么用?
  • 距离向量路由选择协议和链路状态路由选择协议介绍
  • 【AI大模型】大型语言模型LLM基础概览:技术原理、发展历程与未来展望
  • ubuntu 22.04 server 安装 和 初始化 LTS
  • 大数据机器学习算法与计算机视觉应用03:数据流
  • 【代码随想录day25】【C++复健】491.递增子序列;46.全排列;47.全排列 II;51. N皇后;37. 解数独