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

4.1链表

数据存储在节点(node)中,对于链表而言,有2部分

1 class Node{
2         public E e;       //一部分存储真正的数据
3         public Node next;   //另一部分,next是Node类型的对象,换言之,next本身又是一个节点,next指向的是当前节点的下一个节点。
4 }

对于链表来说就像火车一样,每一个节点其实就是一节车厢,在车厢中存储真正的数据,而车厢和车厢之间还要进行连接,以使得数据是整合在一起的,用户可以方便的在所有数据上进行查询等其他的操作,那么数据和数据之间的连接就是有next来完成

链表优点:真正的动态,不需要处理固定容量的问题。

缺点:丧失了随机访问的能力。每一个节点所在的内存的位置是不同的。

1 //创建一个类LinkedList,目的是在LinkedList中实现链表数据结构。要求支持泛型,在LinkedList后加上<E>
2 public class LinkedList<E> { 
3 
4     ......
5 
6 }

 

 1 public class LinkedList<E> {      //在LinkedList中实现链表数据结构。要求支持泛型,在LinkedList后加上<E>
 2     //链表是由一个一个节点所组成的,数据存储在节点(node)中,对于链表而言,有2部分
 3     private class Node{  //将节点Node设置成LinkedList的内部类,同时这个Node设置成私有的,换言之,只有在链表这个数据结构内可以访问node,而在链表这个结构外是无法访问到node的。
 4         //定义Node变量
 5         public E e;       //一部分存储真正的数据
 6         public Node next;   //另一部分,next是Node类型的对象,换言之,next本身又是一个节点,next指向的是当前节点的下一个节点。
 7         //构造函数
 8         public Node(E e, Node next){     //构造函数的2个参数和Node节点中传来变量的2个变量名重名( public E e和public Node next),所以需要写this.e, this.next,表示节点所拥有的
 9             this.e = e;   //将当前的节点e赋值成用户传来的e,其中左边this.e表示节点的e,等号右边是用户传来的e
10             this.next = next;//将当前节点的next赋值成用户传来的next
11         }
12 
13         public Node(E e){
14             this(e, null);
15         }//  构造函数,如果用户只传来一个e,此时就调用具有2个参数的构造方法,第一个参数传用户传来的e,第二个参数赋值为空
16 
17         public Node(){
18             this(null, null);
19         } //构造函数,如果用户什么都不传
20 
21         @Override     //对于链表的每一个节点来说,相应的设置一个他们父类对应的toString函数,来方便后期打印输出
22         public String toString(){
23             return e.toString();
24         }
25     }
26 
27 }

 

转载于:https://www.cnblogs.com/make-big-money/p/10318665.html

相关文章:

  • 信号(SIGNAL)与槽(SLOT)
  • 类的约束 和 异常处理
  • jzoj3208. 【JSOI2013】编程作业(kmp)
  • JS中arguments对象
  • (七)Knockout 创建自定义绑定
  • 【特征提取】MultiBlock-LBP特征
  • STM32L431驱动带UC1698芯片调试记录
  • 函数模板
  • Java发布webservice应用并发送SOAP请求调用
  • .NET Core 项目指定SDK版本
  • Dockerfile 中的 CMD 与 ENTRYPOINT
  • 将golang中变量重置为零的reflect方法
  • Java虚拟机之内存模型
  • [CTSC2014]企鹅QQ
  • 单词接龙---牛客网
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Debian下无root权限使用Python访问Oracle
  • docker python 配置
  • es6
  • Laravel Mix运行时关于es2015报错解决方案
  • React as a UI Runtime(五、列表)
  • SOFAMosn配置模型
  • Terraform入门 - 1. 安装Terraform
  • 阿里研究院入选中国企业智库系统影响力榜
  • 从零搭建Koa2 Server
  • 从输入URL到页面加载发生了什么
  • 缓存与缓冲
  • 排序算法学习笔记
  • 容器服务kubernetes弹性伸缩高级用法
  • 如何用vue打造一个移动端音乐播放器
  • 软件开发学习的5大技巧,你知道吗?
  • 算法-插入排序
  • 我看到的前端
  • 阿里云ACE认证之理解CDN技术
  • ​flutter 代码混淆
  • ​第20课 在Android Native开发中加入新的C++类
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #WEB前端(HTML属性)
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (新)网络工程师考点串讲与真题详解
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转载)从 Java 代码到 Java 堆
  • ..回顾17,展望18
  • ./configure,make,make install的作用
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记