java實現雙向鏈表

來源:互聯網
上載者:User

標籤:

java實現迴圈鏈表:http://www.cnblogs.com/lixiaolun/p/4643911.html

在單鏈表中,查詢下一個元素的時間是O(1)。查詢上一個元素的時間卻是O(n)。

為了克服這種缺點,我們開始學習雙向鏈表。

雙向鏈表類的代碼:

package doublelinkedlist;public class DoubleLinkedList {class Element{private Element prior=null;public Object value=null;private Element next=null;}private Element header = null;//頭結點/** * 初始化鏈表 * */void initList(){header = new Element();header.prior=header;header.value=null;header.next=header;}/** * 向鏈表中第i個位置插入元素o * */void insertList(Object o,int i){if(i<=0||i>size()){System.out.println("插入位置不合法!鏈表長度為:"+size());}else{Element e = new Element();e.value=o;if(header.prior==header)//第一次插入元素{e.prior=header;e.next=header;header.next=e;header.prior=e;}else if(i==size())//在最後插入{System.out.println("在鏈表尾部插入");e.next=header;e.prior=header.prior;header.prior.next=e;header.prior=e;}else{Element temp = header;int count=0;while(temp.next!=header){count++;if(count == i){e.prior=temp;e.next=temp.next;temp.next.prior=e;temp.next=e;}temp=temp.next;}}}}/** * 刪除鏈表中的某個元素 * */void deleteList(int i){if(i<=0||i>size()){System.out.println("插入位置不合法!鏈表長度為:"+size());}else{int count=0;Element temp = header;while(temp.next!=header){temp=temp.next;count++;if(i==count){//刪除第i個元素temp.next.prior=temp.prior;temp.prior.next=temp.next;}}}}/** * 列印鏈表 * */void print(){System.out.print("列印雙向迴圈鏈表:");Element temp = header;while(temp.next!=header){System.out.print(temp.next.value+"\t");temp=temp.next;}System.out.println();}/** * 擷取鏈表的大小 * */int size(){int count=1;Element temp = header;while(temp.next!=header){count++;temp=temp.next;}return count;}}

雙向鏈表的測試類別

package doublelinkedlist;public class DoubleLinkedListMain {public static void main(String[] args) {DoubleLinkedList dlList = new DoubleLinkedList();//有頭結點dlList.initList();dlList.insertList(1, 1);dlList.insertList(2, 2);dlList.insertList(3, 1);dlList.insertList(4, 1);dlList.insertList(5, 1);dlList.insertList(6, 6);dlList.print();dlList.deleteList(3);dlList.print();}}

  

java實現雙向鏈表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.