package Linked;public class Mylinked {private Node first;//链表的第一个节点private Node last;//链表的最后一个节点private int size = 0;//节点的数量public Node search(Object ele) {Node current = this.first;for (int i = 0; i < size; i++) {if (!current.ele.equals(ele)) {if (current.next == null) {return null;}current=current.next;}}return current;}public void remove(Object ele) {//找到被删除的节点Node current = this.first;for (int i = 0; i < size; i++) {if (!current.ele.equals(ele)) {if (current.next == null) {return;}current=current.next;}}//删除节点if(current==first){this.first=current.next;this.first.prev=null;    }else if(current==last){this.last=current.prev;this.last.next=null;}else{//把删除当前节点下一个节点作为删除节点上一个节点的下一个节点current.prev.next=current.next;//把删除节点的上一个节点作为删除节点的下一个节点的上一个节点current.next.prev=current.next;}size--;}public void addFirst(Object ele) {Node node = new Node(ele);//需要保存的节点对象if (size == 0) {//当链表中没有节点的时候this.first = node;this.last = node;} else {node.next = this.first;//把之前的第一个节点作为新增的第一个节点的下一个节点this.first.prev = node;//把新增节点作为第一个节点的上一个节点this.last = node;//把新增节点作为第一个节点}size++;}public void addLast(Object ele) {//在最后一个节点插入数据Node node = new Node(ele);//需要保存的节点对象if (size == 0) {//当链表中没有节点的时候this.first = node;this.last = node;} else {this.last.next = node;//把新增的节点作为最后一个的下一个节点node.prev = this.last;//把之前最后一个节点作为新增节点的上一个节点this.last = node;//把新增的节点作为最后一个节点}size++;}public String toString() {//覆盖父类中的方法if (size == 0) {return "[ ]";}StringBuffer sb = new StringBuffer(size * 2 + 1);Node current = this.first;//第一个节点sb.append("[");for (int i = 0; i < size; i++) {sb.append(current.ele);if (i != size - 1) {sb.append(",");} else {sb.append("]");}current = current.next;//获取自己的下一个节点}return sb.toString();}class Node {Node prev;//上一个节点对象Node next;//下一个节点对象Object ele;//当前节点中存储的数据public Node(Object ele) {this.ele = ele;}}}

package Linked;public class MylinkedDemo {public static void main(String[] args) {Mylinked list=new Mylinked();list.addFirst("a");list.addLast("b");list.addLast("c");list.addLast("d");list.addLast("e");System.out.println(list);list.remove("c");System.out.println(list);}
}

转载于:https://www.cnblogs.com/jiangxifanzhouyudu/p/6686694.html

Java 数据结构之双链表相关推荐

  1. 浅谈:数据结构之双链表结构与代码模拟双链表的实现

    双链表 本文是观看尚硅谷韩老师数据结构与算法根据老师讲解自己做的笔记,部分信息收集网络 与单链表区别 逻辑上没有区别.他们均是完成线性表的内容.主要的区别是结构上的构造有所区别. 对于单链表: 对于一 ...

  2. 图解Java数据结构之环形链表

    本篇文章介绍数据结构中的环形链表. 介绍 环形链表,类似于单链表,也是一种链式存储结构,环形链表由单链表演化过来.单链表的最后一个结点的链域指向NULL,而环形链表的建立,不要专门的头结点,让最后一个 ...

  3. Java数据结构——用单链表编写一个简易通讯录

    Java数据结构--用单链表编写一个简易通讯录 1.定义线性表的抽象数据类型(接口) 2.定义单链表的结点Node类 3.定义数据域中的联系人Person类 4.编写顺序表(类) 5.编写测试程序(m ...

  4. 双链表java实现_双链表 Java实现数据结构

    创建双链表DoubleLinkedList,带范型 public class DoubleLinkedList { private Node head; private Node tail; priv ...

  5. 【手写数据结构】双链表最详细图解

    原创公众号:bigsai 原创不易,如果有收获请不要吝啬你的一键三连! 文章已收录在 全网都在关注的数据结构与算法学习仓库 欢迎star 前言 前面有很详细的讲过线性表(顺序表和链表),当时讲的链表以 ...

  6. Java数据结构——数组、链表

    目录 数据的存储物理结构和逻辑结构 数组 数组的定义与初始化 特点 链表 链表相关代码技巧 数组与链表对比 数据的存储物理结构和逻辑结构 按物理结构: ①:连续的存储空间:数组 元素相邻,在内存中开辟 ...

  7. java数据结构YZP专栏-----链表

    主文章(数据结构的索引目录-进不去就说明我还没写完) https://blog.csdn.net/grd_java/article/details/122252696 模拟数据结构的网站:https: ...

  8. [Java数据结构][3]单链表以及双向链表Java代码实现

    单链表Java代码实现,以水浒英雄链表为例 文章目录 单链表Java代码实现,以水浒英雄链表为例 定义一个英雄链表 定义一个SingleLinkedList 用于管理结点 初始化头结点以及添加结点到单 ...

  9. java数据结构之双端队列ArrayDeque

    这篇文章介绍java的数据结构之双端队列之ArrayDeque 1.ArrayDeque ArrayDeque是一个双端数组,既可以当做栈使用,也可以当做队列使用. ArrayDeque有两个指针he ...

  10. 【数据结构】双链表的应用

    1.设计一个算法,在双链表中值为y的结点前面插入一个值为x的新结点,即使得值为x的新结点成为值为y的结点的前驱结点. 2.设计一个算法,将一个双链表改建成一个循环双链表. #include <s ...

最新文章

  1. jquery click 第一次没用_【通知】同济大学研究生会20202021学年第一次主席联席会...
  2. 一百年后,人类怎样编程?
  3. 2个月精通Python爬虫——3大爬虫框架+6场实战+分布式爬虫,包教包会
  4. Windows环境下配置环境变量
  5. java调用reader的nextInt_Java中如何从键盘输入内容: import java.util.Scanner; .nextLine(); .hasNextInt();...
  6. 【渝粤题库】国家开放大学2021春1009离散数学(本)题目
  7. java中如何使用反射调用方法以及获得类中的属性
  8. 外星人台式机无盘服务器,可以拎走的“台式机” Alienware Area-51m评测
  9. MySQL-8.0 | 数据字典最强解读
  10. 通过 微软 pai-fs 上传数据到HDFS (Microsoft OpenPAI)
  11. 爬虫进阶:CrawlSpider爬取169ee全站美女图片
  12. 阿里云服务器防止ddos被攻击
  13. html插入动态背景,HTML 动态背景
  14. PHP word ppt pdf 转图片
  15. Vue引入并使用Element-UI组件库的两种方式
  16. 浅析漫谈EOS之存储
  17. 去哪儿网2015年春季校园招聘技术笔试题
  18. 基于JAVA词典设计碰到的问题,Hanlp配置自定义词典遇到的问题与解决方法
  19. [计算机网络]六、IP地址概述与应用(网络层)
  20. RapidScada免费开源Scada组态软件系列教程4-各模块详细介绍

热门文章

  1. IOS 公共类-数字处理
  2. 博客链接—Python
  3. 利用HTML5开发Android笔记(中篇)
  4. 【转】掌握java枚举类型(enum type)
  5. 【转】我眼中的自动化测试框架设计要点
  6. GPS使用记录NMEA数据解析、RTK定位以及ntrip协议
  7. React 页面渲染后自动执行onClick事件问题
  8. django组件-cookie与session
  9. credential for git
  10. Android_(服务)Vibrator振动器