双端链表: 比链表多了一些新的特性。
属性:新建了一个对结尾链接点的引用
方法:1.在表尾处可以插入一个链接点;普通链表的也可以,只不过要遍历整个链表才行。
2.可以访问表尾
3.但是,如果对结尾链接点进行删除操作,需要遍历列表。
 
package firstlast; 

public  class Link { 

   public     long dData; 
   public Link next; 
   public Link( long dData){ 
     this.dData = dData; 
  } 
    
   public  void displayLink(){ 
     
    System.out.println( "{"+dData+ "}"); 
  } 

 
 
package firstlast; 

public  class FirstLastLink { 

    
   private Link first; 
    
   private Link last; 
    
   public FirstLastLink(){ 
    first =  null
    last =  null
  } 
    
   public  boolean isEmpty(){ 
     
     return first ==  null
  } 
    
   public  void insertFirst( long dd){ 
     
    Link newLink =  new Link(dd); 
     if(isEmpty()){ //如果原来是空的,更新尾节点;如果不为空,不需要对尾节点进行操作 
      last = newLink; 
    } 
    newLink.next = first; 
    first = newLink; 
     
  } 
    
   public  void insertLast( long dd){ 
    Link newLink =  new Link(dd); 
     
     if(isEmpty()){ 
      first = newLink; 
    } else
      last.next = newLink; //更新最后一个链接点,指向新链接点 
    }        
    last = newLink;   //更新尾节点,指向新链接点 
     
  } 
   public  long deleteFirst(){ 
     if(first ==  null){ 
      System.out.println( "没有数据"); 
       return 0; 
    } 
     long temp = first.dData; 
     if(first.next ==  null){ 
      last =  null
    } 
    first = first.next; 
     
     return temp; 
  } 
    
    
   public  long deleteLast(){ 
     long temp = last.dData; 
     if(first ==  null){ 
      System.out.println( "没有数据"); 
       return 0; 
    } 
     
     return temp; 
  } 
   public  void displayList(){ 
    Link current = first; 
     while(current != null){ 
      current.displayLink(); 
      current = current.next; 
    } 
  } 
   public  static  void main(String[] args){ 
    FirstLastLink firstlastlink =  new FirstLastLink(); 
    firstlastlink.insertFirst(1);     
    firstlastlink.insertFirst(2); 
    firstlastlink.insertLast(4); 
    firstlastlink.insertLast(0); 
     
    firstlastlink.deleteFirst(); 
    firstlastlink.d(); 
     
    firstlastlink.displayList(); 
  }