Java 雙鏈表

2021-08-30 17:53:57 字數 1605 閱讀 9752

鍊錶

如果想要儲存多個物件,首先想到的就是物件陣列,如果要儲存任意物件,可以用object型別的陣列,但是陣列的長度固定,開闢小了不夠用,開闢大了浪費記憶體,所以我們可以用鍊錶來儲存多個物件。

鍊錶有單鏈表和雙鏈表,雙鏈表優化了對前置節點的訪問和隨機訪問。比如我們要在單鏈表中查乙個資料,那麼我們需要從頭節點開始找,如果我們要找的位置恰好在鍊錶最後,這樣查詢非常浪費時間。雙鏈表可以從最後乙個結點開始尋找,這樣就大大減少了查詢所需要的時間。我們可以判斷要查詢的位置在鍊錶的前半部分還是後半部分,如果在前半部分我們就從頭結點開始找,如果在後半部分我們就從尾結點開始找。

下面給出乙個實現雙鏈表及其各種行為的**

class factory

}/**

* 定義行為

*/inte***ce ilink

class linkimpl implements ilink

}@override

public void add(object obj) else

this.size++;

}@override

public boolean remove(object obj) else

if (next == null) else

temp.data = null;

this.size--;

}return false;

}@override

public void set(int index, object obj)

else

system.out.println("輸入不合法");

}@override

public object get(int index)

return "輸入不合法";

}@override

public int contains(object data)

temp = temp.next;

i++;}}

else

temp = temp.next;

i++;}}

return -1;

}@override

public int size()

@override

public void clear()

}@override

public object toarray()

else

return result;

}return null;

}@override

public void printlink()

}system.out.println();

}/**

* 獲取指定位置的結點

* @param index 指定位置

* @return 結點

*/public node node(int index)

return temp;}}

/*** 判斷指定位置是否合法

* @param index

* @return

*/boolean isindex(int index)

}class test

}

java實現單鏈表 雙鏈表 環鏈表

鍊錶是程式裡重要的資料結構,在程式世界運用很廣泛,眾所周知的當屬於jdk裡的linklist了。鍊錶的優點,是相對於陣列來說,擴容是非常快的,如果是陣列擴容,陣列是新申請乙個更大空間的陣列,然後把老陣列內的資料複製到新陣列 而鍊錶就不必申請新鍊錶,直接再分配乙個元素的儲存空間即可。鍊錶的缺點,相對於...

資料結構(Java) 雙鏈表

一 雙鏈表結點類 public class doublenode二 雙鏈表的特徵和操作 head.next null且head.prev null if p.next null 中間插入 p.next.prev q p.next p p.prev.next p.next 有p.prev null i...

單鏈表 雙鏈表

實現乙個單鏈表,鍊錶初始為空,支援三種操作 1 向煉表頭插入乙個數 2 刪除第k個插入的數後面的數 3 在第k個插入的數後插入乙個數 現在要對該鍊錶進行m次操作,進行完所有操作後,從頭到尾輸出整個鍊錶。注意 題目中第k個插入的數並不是指當前鍊錶的第k個數。例如操作過程中一共插入了n個數,則按照插入的...