在實踐中如果知道變動將要發生的地方, 那麼向鍊錶插入或從鍊錶中刪除一項的操作不需要移動很多的項, 而只涉及常熟個節點鏈的改變;
雙鏈表:
1.arraylist與linkedlist的優缺點:
arraylist: 查詢快, 增刪慢;
linkedlist: 增刪快, 查詢慢;
使用linkedlist的優點在於新項的插入和現有項的刪除均開銷很小, 這裡假設變動項的位置是已知的. 這意味著, 在表的前端進行新增和刪除都是常數時間的操作.
對於arraylist如果在首端進行插入和刪除操作, 每次要花費線性時間.
對於arraylist:
1.
get()
2.set()
3.add(index,value)
4.remove()
add(index,value):進行如下操作
new newarrs = new
int[length+1];
for(int i=0;i1;i++)else
}所以對於一項的插入,需要時間為o(n);
對於get和set方法:
get(index);
return arrays[index];
set(index,value):
arrays[index] = value;
linkedlist: 第三章 表 棧和佇列
陣列 在記憶體中儲存為連續固定大小空間。特點 因為是連續空間,所以查詢速度快 o 1 當增刪元素位置不是在陣列尾時,會導致移動陣列元素,加大操作量,降低速度。鍊錶 在記憶體中儲存不連續,用乙個節點記錄下乙個節點位置,形成連續節點。特點 查詢不方便,需要從頭節點開始遍歷,儘管做了一些優化 例如,儲存頭...
第三章 棧和佇列
棧和佇列 一 棧 1 棧的定義 棧是限定僅在表尾進行插入和刪除操作的線性表,允許插入和刪除的一端稱為棧頂,另一端稱為棧底,不含任何資料元素的棧稱為空棧。2 在任何時候出棧的元素都只能是棧頂元素,即最後最後入棧者最先出棧。所以棧中元素除了具有線性關係外,還具有後進先出的特性。3 棧的抽象資料型別定義 ...
第三章 棧和佇列
棧和佇列是兩種常用的資料結構,同時又是操作受限的線性表,也是兩種重要的抽象資料型別。1 1棧是限定僅在表尾進行插入和刪除操作的線性表。棧中元素具有線性關係和後進先出的特性。2雖然對插入和刪除操作的位置限制減少了棧的靈活性,但同時也使得棧的操作更有效更容易實現。3棧的儲存結構分兩種,一種是順序儲存結構...