鏈式結構是一種資料結構,它使用物件引用變數來建立物件間的連結。鏈式結構是基於陣列的集合實現的主要替代方案。
舉例:我們來建立一個Person類,類內部除了含有普通的屬性外,還包含著一個指向另一個Person物件的引用變數
public class Person(){
private String name;
private String address;
private Person next; //指向另一個Person物件的引用變數
//省略屬性的get,set方法
}
以上的Person類就是一個鏈式結構,又稱自引用(self-referential)
連結串列就是鏈式結構的一種,與大小固定的陣列不同,如果不考慮計算機本身的記憶體限制,連結串列容量是沒有上限的。
由於連結串列的大小可以按需伸縮以容納要儲存的元素個數,因此連結串列是一種動態結構
&&&&由於以上這個原因,導致由連結串列實現的集合比陣列實現的集合在增,刪方面,效能更高。
1.訪問元素
相應的連結串列的訪問元素方面就不及陣列了,對於連結串列來說,訪問連結串列中元素的唯一方式就是:從第一個元素開始,順著該連結串列往下,
可想而知如果集合很大,又要尋找最後一個元素,效能就會很低,如檢索儲存了Person類的連結串列的第四個元素,我們只能:
Person current = first;
for(int i = 0; i < 3; i++){
current = current.next;
}
而陣列是基於索引的檢索
2.插入元素
結點可以被插入到連結串列的任何位置,連結串列的前端,連結串列的內部結構之間,連結串列的末端。
在連結串列前端插入結點,需要重新設定指向整個連結串列的引用。首先,新增結點的next引用被設定為指定連結串列的當前首節點,接著,指向連結串列前端的引用重新設定為指向這個
新增加的結點。