Java雙向鏈表實現__Java

來源:互聯網
上載者:User
public class DoublyLinkList {private class Data{private Object obj;private Data left = null;private Data right = null;Data(Object obj){this.obj = obj;}}private Data first = null;private Data last = null;public void insertFirst(Object obj){Data data = new Data(obj);//if(first == null){//first = data;//last = data;//}else{//data.right = first;//first.left = data;//first = data;//}//重構一下代碼if(first == null){  last = data;  }else{  data.right = first;  first.left = data;  }  first = data;  }public void insertLast(Object obj){Data data = new Data(obj);//if(first == null){//first = data;//last = data;//}else{//last.right = data;//data.left = last;//last = data;//}//重構一下代碼if(first == null){first = data;}else{last.right = data;data.left = last;}last = data;}public boolean insertAfter(Object target,Object obj){Data data = new Data(obj);Data cur = first;while(cur != null){if(cur.obj.equals(target)){data.right = cur.right;data.left = cur;if(cur == last)last = data;elsecur.right.left = data;cur.right = data;return true;}cur = cur.right;}return false;}public Object deleteFirst() throws Exception{if(first == null)throw new Exception("empty!");Data temp = first;if(first.right == null){first = null;last = null;}else{first.right.left = null;first = first.right;}return temp;}public Object deleteLast() throws Exception{if(first == null)throw new Exception("empty!");Data temp = last;if(first.right == null){first = null;last = null;}else{last.left.right = null;last = last.left;}return temp;}public Object delete(Object obj) throws Exception{if(first == null)throw new Exception("empty!");Data cur = first;while(cur != null){if(cur.obj.equals(obj)){if(cur == last)last = cur.left;elsecur.right.left = cur.left;if(cur == first)first = cur.right;elsecur.left.right = cur.right;return obj;}cur = cur.right;}return null;}public void display(){System.out.print("first -> last : ");Data data = first;while(data != null){System.out.print(data.obj.toString() + " -> ");data = data.right;}System.out.print("\n");}public static void main(String[] args) throws Exception{DoublyLinkList dll = new DoublyLinkList();dll.insertFirst(1);dll.insertLast(3);dll.insertAfter(1, 2);dll.insertAfter(3, 4);dll.insertAfter(4, 5);dll.display();dll.deleteFirst();dll.display();dll.deleteLast();dll.display();dll.delete(3);dll.display();dll.delete(2);dll.display();dll.delete(4);dll.display();}}
first -> last : 1 -> 2 -> 3 -> 4 -> 5 -> first -> last : 2 -> 3 -> 4 -> 5 -> first -> last : 2 -> 3 -> 4 -> first -> last : 2 -> 4 -> first -> last : 4 -> first -> last : 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.