面对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;	
    	   }

第一次添加节点的时候

在这里插入图片描述

第二次插入节点的时候

  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节点被第三个节点覆盖!!

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

发布了17 篇原创文章 · 获赞 0 · 访问量 478

猜你喜欢

转载自blog.csdn.net/sqL520lT/article/details/105384767