双向链表

2023-10-26

双向就意味着对于每一个元素,都有两个方向的指向

因此从以下几个方面阐述双向链表

  1. 重要方法分析
  2. 全部代码
一.重要方法分析
这里的链表实现了我博客中的接口 ILinkedList 与结点 LinkedNode ,具体的博客地址:http://blog.csdn.net/weixin_35757704/article/details/77894325
void insert(int key):
int delete():
boolean isEmpty():
二.全部代码
package com.list;

/**
 * 双向链表:
 * 每两个元素之间都有相互之间的指向
 * 前一个元素.next = 下一个元素,下一个元素.prev = 上一个元素
 * 但是第一个元素.prev = null ,同理最后一个元素.next = null
 */
public class DoublyLinkedList implements ILinkedList {
    LinkedNode head;    //这里我们将 head 作为所有节点的头,即 head.next 指向第一个元素

    @Override
    //将一个节点插入到开头
    public void insert(int key) {
        LinkedNode node = new LinkedNode(key);
        if (!isEmpty()) {
            node.next = head.next;
            head.next = node;
            node.next.prev = node;
        } else {
            head.next = node;
        }
    }

    @Override
    //将末尾的节点删除
    public int delete() {
        assert !isEmpty();
        LinkedNode p = new LinkedNode(0);
        p.next = head.next;
        while (p.next.next != null) {
            p = p.next;
        }
        //现在 p.next.next 为 null,即 p -> p.next -> null ,现在要删除 p.next
        int key = p.next.key;
        p.next = null;
        return key;
    }

    @Override
    //判空
    public boolean isEmpty() {
        return head.next == null;
    }

    public DoublyLinkedList() {
        head = new LinkedNode(0);
    }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

双向链表 的相关文章

  • Java 相当于 C# 中带有 @ 的逐字字符串

    快问 Java 中是否存在应用于字符串的 等效项 例如我可以做 c afolder afile 在 C 中 让它在处理时忽略转义字符 而不必这样做 c afolder aFile Java 有等效的吗 嗯 stackoverflow 正在逃
  • 增加字符串的最后一个字母

    这是我希望 Java 的 String 类有一个 ReplaceLast 方法的地方 但它没有 而且我的代码得到了错误的结果 我正在编写一个程序 该程序在数据结构中搜索与字符串前缀匹配的任何项目 但是 由于我使用的是迭代器 iter nex
  • Java的JConsole可以用来自动配置内存吗?

    我正在学习JavaJMX https docs oracle com javase tutorial jmx and JConsole http docs oracle com javase 7 docs technotes guides
  • 如何将TabLayout与Recyclerview同步?

    我有一个TabLayout with Recyclerview这样当单击选项卡时Recyclerview滚动到特定位置 我也想要相反的过程 这样当Recyclerview滚动到特定位置 然后该特定选项卡会突出显示 例如 如果有 4 个选项卡
  • “不能从静态上下文引用非静态方法”JPA Java

    我从这一行收到 无法从静态上下文引用非静态方法 错误 createStudent stu00001 new Date 631152000000 m WB new Type Name Bob Smith 如何正确组成 日期 我查看了 API
  • Java switch case 抛出 nullPointer 异常

    我有一个枚举声明如下 public enum Status REQ URL1 NOT URL2 GET URL3 String getURL Status String getURL this getURL getURL 我班上的一个领域
  • 创建 CXF Web 服务客户端时出现 ServiceConstructionException (scala+java+wsdl2java)

    这些其他问题暗示了解决方案 但我无法让它发挥作用 无法解析 http schemas xmlsoap org wsdl soap 的绑定 https stackoverflow com questions 26159206 could no
  • 当服务器仅从请求中读取标头时,Http 客户端未收到响应

    我在 Java 中搞乱了 HTTP 和套接字 希望你能对此有所了解 当我用 Java SE 11 编写的 HTTP 服务器没有读取整个请求然后响应时 客户端不会收到它或收到错误 这是为什么 在服务器读取整个请求之前 客户端是否无法读取响应
  • Hamcrest 与 MockMvc:检查键是否存在,但值可能为空

    我正在使用 MockMvc 进行一些测试 我想验证 JSON 响应的结构 具体来说 我想确保属性的键存在 并且值是某种类型或为 null keyToNull null This may be null or a String keyToSt
  • 实现一个java UDF并从pyspark调用它

    我需要创建一个在 pyspark python 中使用的 UDF 它使用 java 对象进行内部计算 如果它是一个简单的 python 我会做类似的事情 def f x return 7 fudf pyspark sql functions
  • 将 LinkedHashset 内容复制到新的 ArrayList?

    我有一个最初包含一些内容的 listView 如果它得到相同的内容 我通过删除重复linkedhashset 现在 我想复制linkedhashset内容 即没有重复的内容到新的ArrayList 我尝试复制通过 p addAll 0 lh
  • 无法向 openfire 服务器发送消息

    我无法使用 SMACK API 向 openfire 服务器上的 XMPP 客户端发送消息 我不确定我哪里出错了 我在 gtalk 上测试了相同的代码 它工作正常 public class SenderTest public static
  • 谷歌gson LinkedTreeMap类转换为myclass

    我知道这个问题以前已经被问过 由于我对java和android的新手技能 我一个多星期都无法解决这个问题 我和我的一位朋友正在开发一个 Android 项目 其中有一些类似的事情 最奇怪的部分是 只有当我从 Google Play 商店下载
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • 强制预先加载原本延迟加载的属性

    我有一个 Hibernate 对象 它的属性都是惰性加载的 大多数这些属性是其他 Hibernate 对象或 PersistentSet 现在我想强制 Hibernate 一次性加载这些属性 当然 我可以 触摸 这些属性中的每一个objec
  • 如何反序列化数组 google-gson 内的数组

    我有这样的 JSON Answers Locale Ru Name Name1 Locale En Name Name2 Locale Ru Name Name3 Locale En Name Name4 正如你所看到的 我的数组里面有数组
  • 什么触发了java垃圾收集器

    我对 Java 中垃圾收集的工作原理有点困惑 我知道当不再有对某个对象的实时引用时 该对象就有资格进行垃圾回收 但是如果它有对实时对象的引用怎么办 可以说我有一个节点集合 它们再次引用更多节点 List 1 gt Node a gt Nod
  • JToolBar 放回 GridBagLayout 时出现 IllegalArgumentException

    为什么这段代码会抛出一个IllegalArgumentException当工具栏被拖离 GUI 然后关闭 将其返回到 GUI 时 我可以理解为什么在没有约束的情况下添加组件可能是不合适的 但在这种情况下 工具栏最初添加到面板 使用GridB
  • 在 WildFly 10 中添加 jar 作为部署

    有没有办法 我们可以将 jar 部署为库 部署WildFly 10就像我们可以做到的那样weblogic服务器 或者我们可以将 jar 放在服务器的任何文件夹中并将这些依赖项定义为provided 我得到了什么部署方式jars on Wil
  • Oracle 的商业 Hotspot JVM 相对于 OpenJDK 有哪些性能优势?

    正如这个问题中所描述的 OpenJDK 与 Java HotspotVM https stackoverflow com q 44335605 1593077 Oracle 的商业 Hotspot JVM 本质上是 OpenJDK 加上一些

随机推荐

  • ctfshow-萌赛

    目录 web 签到 给她 假声赛 web 签到 很明显的命令执行漏洞 我们把前后闭合即可 payload 1 ls 1 1 cat flag 1 给她 根据题目提示很容易就想到是 git泄露 直接用gitHack扫描题目地址 git 发现存
  • 电子科技大学人工智能期末复习笔记(二):MDP与强化学习

    目录 前言 期望最大搜索 Expectimax Search 马尔科夫决策 MDP offline 超重点 先来看一个例子 基本概念 政策 Policy 折扣 Discounting 如何停止循环 价值迭代 Value Iteration
  • LeetcodeSQL入门——知识点总结(选择/排序/修改/字符串处理/正则)

    LeetcodeSQL入门 选择 排序 修改 字符串处理 选择 sql语言对于空值的判断是IS NULL或者IS NOT NULL eg 某网站包含两个表 Customers 表和 Orders 表 编写一个 SQL 查询 找出所有从不订购
  • 剑指Offer 40

    使用优先队列 将非负数变为非正数存储 结果变成非负数 class Solution public int getLeastNumbers int arr int k if k 0 return new int 0 int nums new
  • SequenceInputStream----合并流

    这个类的作用是将多个输入流合并成一个输入流 通过SequenceInputStream类包装后形成新的一个总的输入流 1 SequenceInputStream InputStream s1 InputStream s2 和Sequence
  • 差分方程与滤波的实现

    1 滤波基础知识 2 差分方程 3 IIR滤波器 1 直接I型IIR滤波器 2 直接II型IIR滤波器
  • 备战2023蓝桥国赛-移动服务

    题目描述 解析 这道题我想复杂了 一开始我是这样想的 设dp i j 表示按顺序满足到第i个请求时 最初在j号点的人到达第i个请求的位置的情况下的最小花费 state i j 表示按顺序满足到第i个请求时 最初在j号点的人到达第i个请求的位
  • Typescript 之接口 interface(详解)

    一 interface的基本含义 TS新增了一个重要概念 接口 分为对象类型接口和函数类型接口 接口可以约束对象 函数 类的结构和类型 是一种代码协作必须遵守的契约 Interface 是一种描述对象或函数的东西 你可以把它理解为形状 一个
  • 使用github免费搭建个人博客后的写作及上传说明

    项目地址 我的博客github项目地址 个人博客网站 欢迎进入我的博客 本篇文章介绍如何在博客搭建好的基础上 使用它 使用它来写博客 更新博客页面 第一种方法 本地编辑 上传到github 首先 从我的github个人博客项目仓库克隆出该工
  • vscode中CommandNotFoundError: Your shell has not been properly configured to use ‘conda active的可能解决方法

    一 问题背景 如题 出现该问题后 我首先通过搜索尝试了conda init 用管理员身份运行powershell进行权限配置等方法无果 python之 vscode中激活conda虚拟环境报错或者打开虚拟环境失败 if using cond
  • 滑动时间窗口的思想和实现,环形数组,golang

    固定时间窗口 在开发限流组件的时候 我们需要统计一个时间区间内的请求数 比如以分钟为单位 所谓固定时间窗口 就是根据时间函数得到当前请求落在哪个分钟之内 我们在统计的时候只关注当前分钟之内的数量 即 0s 60s 因为流量并不是均匀的 所以
  • 微软RIA服务2009年7月预览版官方手册第2节(翻译:戴石麟)

    2 理解N层Silverlight应用项目 微软 NET RIA服务通过结合ASP NET和Silverlight平台来简化传统N层应用模式 应用逻辑写在中间层上 通过查询 更新 定制方法和服务操作来控制对数据的访问 NET RIA服务特性
  • Verilog入门学习笔记:Verilog基础语法梳理

    无论是学IC设计还是FPGA开发 Verilog都是最基本 最重要的必备技能 但任何一门编程语言的掌握都需要长期学习 并不是简简单单的随便读几本书 随便动动脑筋那么简单 Verilog是一门基于硬件的独特语言 由于它最终所实现的数字电路 具
  • netstat详解

    netstat是控制台命令 是一个监控TCP IP网络的非常有用的工具 它可以显示路由表 实际的网络连接以及每一个网络接口设备的状态信息 netstat可以用于显示与IP TCP UDP和ICMP协议相关的统计数据 一般用于检验本机各端口的
  • vb wor转存html,利用VB操作WORD的基本方法

    利用VB操作WORD的基本方法 通过查阅资料 自我实践 经实验通过 先引用word Application Dim MyWord As Word Application Dim MyWordBook As Word Document Set
  • Numpy:基础数据结构

    1 数组的基本属性 import numpy as np ar np array 1 2 3 4 5 6 7 print ar 输出数组 注意数组的格式 中括号 元素之间没有逗号 和列表区分 print ar ndim 输出数组维度的个数
  • Python @函数装饰器及用法(超级详细)转

    Python 内置的 3 种函数装饰器 分别是 staticmethod classmethod 和 property 其中 staticmethod classmethod 和 property 都是 Python 的内置函数 那么 我们
  • layui子弹框调用父弹框方法

    var thisFrame parent window document getElementById LAY layuiStampDuty1 getElementsByTagName iframe 0 id 获取父级弹框id值 var d
  • 【20220412】文献翻译4:交互中的手势和语言概述

    Gesture and speech in interaction An overview 1 简介 2 什么是共同语言 同声传译 手势 2 1 用手比划 2 2 用头做动作 3 语音和手势是交互的 3 1 交际环境中的手势 3 2 传递意
  • 双向链表

    双向就意味着对于每一个元素 都有两个方向的指向 因此从以下几个方面阐述双向链表 重要方法分析 全部代码 一 重要方法分析 这里的链表实现了我博客中的接口 ILinkedList 与结点 LinkedNode 具体的博客地址 http blo