java双向链表
2016-08-08 14:33
363 查看
既允许向前遍历也允许向后遍历整个链表
public class Link { public long dData; public Link next; public Link previous; public Link(long d){ dData=d; } public void displayLink(){ System.out.print(dData+" "); } }
public class DoublyLinkedList { private Link first; private Link last; public DoublyLinkedList(){ first=null; last=null; } public boolean isEmpty(){ return first==null; } public void insertFirst(long dd){//insert at front of list Link link = new Link(dd); if(isEmpty()) last=link; //link<--last else first.previous=first; link.next=first; first=link; } public void insertLast(long dd){ Link link = new Link(dd); if(isEmpty()) first=link; else{ last.next=link; link.previous=last; } last=link; } public Link deleteFirst(){ Link temp=first; if(first.next==null){ last=null; } else{ first.next.previous=null; } first=first.next; return temp; } public Link deleteLast(){ Link temp=last; if(first.next==null){ first=null; }else{ last.previous.next=null; } last=last.previous; return temp; } //insert dd just after key public boolean insertAfter(long key,long dd){ Link current=first; while(current.dData!=key){ current=current.next; if(current==null) return false; } Link link = new Link(dd); if(current==last){ link.next=null; last=link; }else{ link.next=current.next; current.next.previous=link; } link.previous=current; current.next=link; return true; } public Link deleteKey(long key){ Link current=first; while(current.dData!=key){ current=current.next; if(current==null) return null; } if(current==first){ first=current.next; }else{ current.previous.next=current.next; } if(current==last){ last=current.previous; }else{ current.next.previous=current.previous; } return current; } public void displayForward(){ System.out.print("Link(first-->last)"); Link current=first; while(current!=null){ current.displayLink(); current=current.next; } System.out.println(""); } public void displayBackward(){ System.out.print("Link(last-->first)"); Link current=last; while(current!=null){ current.displayLink(); current=current.previous; } System.out.println(""); } }
public class DoublyLinkApp { public static void main(String[] args) { DoublyLinkedList list=new DoublyLinkedList(); list.insertFirst(22); list.insertFirst(44); list.insertFirst(66); list.insertLast(11); list.insertLast(33); list.insertLast(55); list.displayForward(); list.displayBackward(); list.deleteFirst(); list.deleteLast(); list.displayForward(); list.deleteKey(11); list.displayForward(); list.insertAfter(22, 77); list.displayForward(); } }
相关文章推荐
- java 语言中链表和双向链表的实现!
- JAVA 语言中链表和双向链表的实现
- Java模拟单向链表和双向链表的实现
- 使用java实现双向链表数据结构
- Java实现链表(单向和双向)
- Java语言中链表和双向链表的实现-Java基础-Java-编程开发
- java 双向循环链表
- java中的双向链表
- java双向链表
- 双向链表-数据结构-java实现
- Java语言中链表和双向链表的实现
- Java语言中链表和双向链表的实现
- Java语言中链表和双向链表
- Java模拟单向链表和双向链表的实现
- Java语言中链表和双向链表
- Java语言中链表和双向链表的实现
- 使用JAVA实现双向链表
- JAVA实现双向链表
- Java模拟单向链表和双向链表的实现
- JAVA实现双向链表