链表(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.rhkb.cn/news/469177.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS之正则表达式

一、什么是正则表达式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…

MySQL数据库:本地部署数据库以及安装彩虹猫【Navicat】

文章目录 一.安装前准备工作1.下载并解压文件2.修复电脑缺失的文件 二.本地部署MySQL1.先解压mysql-8.0.25-winx64.zip&#xff0c;并把文件放到安装需要的位置&#xff0c;再把my.ini文件放到mysql-8.0.25-winx64的根目录2.修改注册表的根目录信息为自己的安装装路径3.进命令符…

11个简单易用的电商购物车设计案例

文章目录 前言正文1.扁平化设计购物车2.无表格布局购物车3.美食购物车4.响应式购物车5.jQuery购物车6.动态价格更新购物车7.标签式滑动购物车8.动态商店与购物车一体化设计9.简约清爽的购物车设计10.基于Vue.js的购物车11.域名购物车 总结 前言 现在的电子商务网站&#xff0c…

Stable Diffusion Web UI - ControlNet 姿势控制 openpose

openpose 是 ControlNet 中常用的控制模式之一。 通过 openpose 可以锁定人物姿势&#xff0c;把姿势信息传递给 Stable Diffusion 扩散模型&#xff0c;让其在扩散生成图片的时候遵照特定的任务姿势。 通过 openpose 能够得到类似如下效果&#xff1a; 同样的姿势&#xff0…

Word2Vec,此向量维度,以及训练数据集单条数据的大小,举例说明;Skip-gram模型实现词嵌入;热编码(One-Hot Encoding)和词向量;

目录 Word2Vec Word2Vec,此向量维度,以及训练数据集单条数据的大小,举例说明 一、Word2Vec的词向量维度 二、训练数据集单条数据的大小 综上所述 热编码(One-Hot Encoding)和词向量 一、表示方式 二、维度与计算效率 三、语义捕捉能力 四、举例说明 Skip-gram模…

大模型预训练+微调大模型;大模型提示/指令模式”(Prompt/Instruct Mode)

目录 大模型发布版本 大模型参数量 预训练+微调大模型 预训练大模型的优势 微调的概念与过程 微调的优势 应用场景与案例 提示/指令模式”(Prompt/Instruct Mode) Prompt模式与Instruct模式的区别与联系 Prompt/Instruct模式的应用优势 应用案例 大模型发布版本 大…

WPF在MVVM模式下怎么实现导航功能

在mvvm的模式下wpf通过frame实现页面跳转_哔哩哔哩_bilibili 视频讲解同步可观看 如下图&#xff0c;我们要实现点击左侧的菜单&#xff0c;在右侧展示不同的页面 实现代码如下&#xff1a; 一、如何从主窗体跳转到页面。 1、在mainwindow.xaml的菜单栏代码里加入如下代码 …

ubuntu 22.04 server 安装 anaconda3

ubuntu 22.04 server 安装 anaconda3 https://www.anaconda.com/download/success Anaconda Installers wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh 其他的是 默认 Executing transaction: done installation finished. Do you wish to…

亚信安全新一代WAF:抵御勒索攻击的坚固防线

近年来&#xff0c;勒索攻击已成为黑客的主要攻击手段。新型勒索攻击事件层出不穷&#xff0c;勒索攻击形势愈发严峻&#xff0c;已经对全球制造、金融、能源、医疗、政府组织等关键领域造成严重危害。如今&#xff0c;勒索攻击手段日趋成熟、攻击目标愈发明确&#xff0c;模式…

函数式编程Stream流(通俗易懂!!!)

目录 1.Lambda表达式 1.1 基本用法 1.2 省略规则 2.Stream流 2.1 常规操作 2.1.1 创建流 2.1.2 中间操作 filter map distinct sorted limit ​编辑skip flatMap 2.1.3 终结操作 foreach count max&min collect anyMatch allMatch noneMatch …

SDL线程

文章目录 SDL线程相关 SDL线程相关 SDL线程创建&#xff1a;SDL_CreateThreadSDL线程等待: SDL_WaitThreadSDL互斥锁 :SDL_CreateMutex/SDL_DestoryMutexSDL锁定互斥: SDL_LockMutex/SDL_UnlockMutexSDL条件变量:SDL_CreateCond/SDL_DestoryCondSDL条件变量 等待通知: SDL_Con…

【初阶数据结构与算法】线性表之链表的分类以及双链表的定义与实现

文章目录 一、链表的分类二、双链表的实现1.双链表结构的定义2.双链表的初始化和销毁初始化函数1初始化函数2销毁函数 3.双链表的打印以及节点的申请打印函数节点的申请 4.双链表的头插和尾插头插函数尾插函数 5.双链表的查找和判空查找函数判空函数 6.双链表的头删和尾删头删函…

深 度 学 习

神经网络基础 一、逻辑回归( Logic Regression ) 1 问题的模型 模型&#xff1a; 其中xx为输入量&#xff0c;y^​预测量&#xff0c;σ()激活函数。   逻辑回归主要用于二分类问题的拟合&#xff1a;0≤y^P(y1∣x)≤1&#xff0c;σ(z)如图&#xff1a; ​ 问题&#xff…

【Leecode】Leecode刷题之路第46天之全排列

题目出处 46-全排列-题目出处 题目描述 个人解法 思路&#xff1a; todo代码示例&#xff1a;&#xff08;Java&#xff09; todo复杂度分析 todo官方解法 46-全排列-官方解法 预备知识 回溯法&#xff1a;一种通过探索所有可能的候选解来找出所有的解的算法。如果候选解…

解线性方程组(二)

实验类型&#xff1a;●验证性实验 ○综合性实验 ○设计性实验 实验目的&#xff1a;进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法&#xff0c;提高编程能力和解算线性方程组问题的实践技能。 实验内容&#xff1a; 1)取初值性x(0)(0,0,0,0)T, 精度要求ε…

ReactPress系列—NestJS 服务端开发流程简介

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;感谢Star。 NestJS 服务端开发流程简介 NestJS 是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。它使用 TypeScript&#xff08;但也支持纯 Java…

ImportError: cannot import name ‘packaging‘ from ‘pkg_resources‘ 的参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境&#xff1a; Ubuntu20.04 ROS-Noetic 一、问题描述 自己在通过 pip install 安装module时 &#xff08;使用的是 pip install mmcv&#xff09;遇到如下问题&#xff1a; ImportError: cannot …

运维人员必备的 Mac Zsh 配置技巧

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Flume学习

一、Flume概述 Flume最主要的作用就是&#xff0c;实时读取服务器本地磁盘的数据&#xff0c;将数据写入到HDFS。 二、Flume基础架构 三、Flume安装部署 配置Flume的前提是要配置好JDK和Hadoop 1.解压 [rootlxm148 soft]# tar -zxvf ./apache-flume-1.9.0-bin.tar.gz -C /…

FBX福币交易所多只高位股重挫,聚星科技首日高开348%

查查配分析11月11日电 周一,A股三大指数集体低开,沪指低开0.58%,深成指低开0.67%,创业板指低开0.99%。 FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 Wind截图 券商股明显回调,大消费普遍走低,乳业、白酒、文旅板块跌幅…