链表

作者: 不做掉发侠 | 来源:发表于2021-06-12 16:02 被阅读0次

链表的基本介绍

如果说现在要想保存多个对象,那么首先可以想到的概念就只有对象数组,同时如果该数组可以保存任意的对象,那么又可以想到的一定是Object型的数组。

public class TestLinkDemo {

      public static void main(String[] args) throws Exception {

Object data[]=new Object[3];

}}

但是在实际的开发之中,要面临的一个问题是:数组是一个定长的线性结构,也就是说虽然以上的代码能够满足存放多个内容,但是一旦我们的内容不足或者内容过多,都有可能造成内存的浪费。

如果此时要想解决此类问题,最好的做法就是不定义一个固定长度的数组,有多少数据就保存多少数据。应该采用火车车厢的设计模式,动态的进行车厢的挂载,那么假设现在每节车厢只保留一个数据。那么现在假设可以不受到内存的限制,就可以证明解决了数组的长度问题。

如果要想去定义这个火车车厢肯定不能只保留一个数据,因为还需要另外一个指向,指向下一个节点.

虽然设置好了关系,但是里面存放的都是数据,真正需要的时候一定需要将数据依次取出,那么这个时候肯定用递归的方式来完成。

范例:链表的基本雏形

class Node{//因为只有Node类才可以在保存数据的同时设置数据的先后关系

private Object data;

private Node next;//定义下一个节点Node的地址

public Node(Object data) {

//车厢里面一定要去保存有数据

this.data=data;

}

public void setData(Object data) {

this.data=data;

}

public Object getData() {

return this.data;

}

public void setNext(Node next) {

this.next=next;

}

public Node getNexk() {

return this.next;

}

}

public class TestLinkDemo {

public static void main(String[] args) throws Exception {

//1.封装几个节点

Node root=new Node("火车头");//现在假设存放的数据是Stirng

Node n1=new Node("车厢A");

Node n2=new Node("车厢B");

Node n3=new Node("车厢C");

//2、需要设计节点的关系

root.setNext(n1);

n1.setNext(n2);

n2.setNext(n3);

//3、输入节点

print(root);

}

public static void print(Node node) {

if(node!=null) {

//表示当前存在有节点

System.out.println(node.getData());

print(node.getNexk()); //继续向下取出

}

}

结果火车头

车厢A

车厢B

车厢C

结论:发现在整个链表的实现过程之中Node类的核心作用在于:保存数据和连接节点关系

但是以上的代码里面比较麻烦了。因为发现主方法需要自己来进行节点的创建以及关系的配置。

所以所谓的链表就需要有一个单独的类,假设:Link类来通过整个类来实现Node类的数据保存以及关系处理。

————————————————

版权声明:本文为CSDN博主「Y__C__X」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_41197830/article/details/80215406

相关文章

  • 链表基础

    链表基础 链表长度 链表为空 链表结构 链表增加

  • 双向链表&双向循环链表

    链表分为:单链表、单向循环链表、双向链表、双向循环链表本节主要说明:双向链表、双向循环链表 定义结点 一、双向链表...

  • 算法与数据结构:链表

    链表 链表还分为单向链表和双向链表, 但是这篇文章只说单向链表 , 下次再讲双向链表 . 链表和数组的区别 ? 链...

  • 链表

    链表 单链表反转链表中环的检测两个有序链表合并删除链表倒数第n个节点求链表的元素总个数 一.单向链表 链表共有特征...

  • 五、双向链表

    双向链表 此前介绍的链表,也叫做单向链表使用双向链表可以提升链表的综合性能 修改之前的单链表的源码: 双向链表 –...

  • 链表

    内容 链表数据结构 向链表添加元素 从链表移除元素 使用 LinkedList 表 双向链表 循环链表 链表数据结...

  • 数据与算法结构

    线性表 顺序表 链表(物理上离散,逻辑上连续) 链表的类别 单链表 循环链表 双链表 链表的操作 顺序表与链表的比...

  • 数据结构——链表

    本文所讲的链表是单链表,链表采用无头链表 科普下:一般链表可以分为有头节点的链表与无头节点的链表 有头节点的链表:...

  • 链表

    文章结构 链表的定义 链表的插入和删除操作 链表的特性 常见的链表结构 自定义链表 链表的经典操作 使用链表实现L...

  • Algorithm小白入门 -- 单链表

    单链表递归反转链表k个一组反转链表回文链表 1. 递归反转链表 单链表节点的结构如下: 1.1 递归反转整个单链表...

网友评论

    本文标题:链表

    本文链接:https://www.haomeiwen.com/subject/cdlieltx.html