链表的基本介绍
如果说现在要想保存多个对象,那么首先可以想到的概念就只有对象数组,同时如果该数组可以保存任意的对象,那么又可以想到的一定是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
网友评论