鍊錶
如果想要儲存多個物件,首先想到的就是物件陣列,如果要儲存任意物件,可以用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個數,則按照插入的...