面对LinkedList节点!!!

如有问题欢迎提出交流!
看谁破我第一个赞吧!
咋们眼光要长远!点个赞以后我更加厉害了!!
不忘你老人家!!!!

LinkedList的底层在这里插入图片描述

温柔说出我的问题哦!!!谢谢啦
在这里插入图片描述

直接封装一个LinkList集合缩小版,不完美


/**
 * 
 * @author 戴尔
 *
 */
public class LinkList {
	
	/**
	 * 
	 * 创建一个节点内部类
	 */
	static class Node{
		Node prev;           //上一个节点
		Node next;	        //下一个节点
		Object elmenet;     //完美的值		
	    public Node(Object element){
	    	this.elmenet = element;
	    }    
	    public Node (Node prev,Node next,Object elmenet){	
	    	super();
	    	this.prev=prev;
	    	this.next=next;
	    	this.elmenet=elmenet;   	
	    }	    		
	}
	        //没有下标  除了ArrayList
	        private Node first;//首节点
	        private Node last;//尾结点
	        private Node size;     //有效数位
	/**
	 * 添加一个元素
	 * 
	 */	
       public  void add(Object obj){
    	   Node node=new  Node(obj);
    	   if (first==null) {
    		   first=node;
    		   last=node;		
		}
    	   else{
    		   node.prev=last;
    		   node.next=null;
    		   last.next=node;//这里面的next是跟first和last操作的同一个地址 
    		   last=node;	
    	   }
       }
}
package com.luo.demo;

public class text {
	
	public static void main(String[] args) {
		LinkList list=new LinkList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("d");
		list.add("e");
		list.add("f");
		System.out.println(list);
		
		
	}

}

运行结果:
[a,b,c,d,e,f]

last.next=node;
这里面的next是跟first和last操作的同一个地址

在这里插入图片描述

详图讲解:

外部创建了一个节点对象,
里面是新节点,
图一:
在这里插入图片描述

图二:
在这里插入图片描述
以上可知:
图一:
外部创建了一个节点对象,
里面是新节点,我们给他了一个新的地址,0x111
first和last就都指向 这个外部节点
三个是同一个东西 first等于last等于node的这个新节点的

   if (first==null) {
    		   first=node;
    		   last=node;		
		}

图二:

下面是分开解答的代码图像!希望您能认真阅读! 肯定能懂!!!!

 	   else{
    		   node.prev=last;
    		   node.next=null;
    		   last.next=node;
    		   last=node;	
    	   }

第一次添加节点的时候

这里因为是第一个节点,你可以理解 当前的节点就是 第一个节点 也是最后一个节点!!!
因为 first ==last ==node(当前节点)

在这里插入图片描述

第二次插入节点的时候

  node.prev=last; 
  把last 的地址传给第二个节点的prev,你就会发现第二个节点跟第一个还有最后一个节点的地址一样了!!!
  也就是上面说的  first==last==node
  如果还是没有明白,我们等下看第三个节点

在这里插入图片描述

 node.next=null; 这不代码是什么都不动!!就等于null就行了,后面你会发现 是留着挂链条的!!!
 连接前面节点的地址
  last.next=node; 这步就是把最0x222给first 还有last的next
然后你就可以发现  第一个节点和第二个节点  挂链了!!双方就都挂链了 
 (这儿只是第一个和第二个有关系了!)  第二个节点是中介 跟二边都有关系,但是跟第一个最亲!!
 第一个跟最后一个没有联系  



.第一个跟最后一个联系往下看   last=node

在这里插入图片描述

last=node;  这儿的理解就是last的节点  整个都指向了 node	 0x222的属性  
node  就是目前的0x222节点(第二个节点)就相当copy了一份第二个节点给最后的last节点
(第二个节点完全覆盖last节点的东西,你可以理解last节点复制了第二个节点的东西)

也就是最后一个节点跟倒数第二个节点是一模一样了!

在这里插入图片描述

第三次插入节点的时候

   node.prev=last;  把当前的last的地址给prev,你会发现跟第一个节点没有关系 
跟第二个 和 最后一个节点有联系

在这里插入图片描述

   node.next=null;这个还是不变  
       last.next=node;  

在这里插入图片描述

last=node;   last节点被第三个节点覆盖!!

在这里插入图片描述
最后的排版!!!下图!
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值