靜態資料結構( static data structure )
陣列:使用連續分配的記憶體空間( contiguous allocation )來儲存有序表中的資料。讀取修改任一元素的時間都是固定的,刪除加入資料時需要移動大量的資料。
在建立靜態資料結構的初期就必須宣告最大可能要占用的固定記憶體空間,因此容易造成記憶體的浪費。
動態資料結構( dynamic data structure )
鍊錶( linked list ):使用不連續的記憶體空間儲存具有線性表特性的資料。資料的插入刪除方便,不需要移動大量資料,查詢時必須按順序找到該資料,設計麻煩。
記憶體分配是在程式執行時才進行的,不需要事先宣告,充分節省記憶體。
在鍊錶 t 的節點 x 之後新增節點 i:
class node:
def __init__(self):
self.data = 0
self.next = none
def insert(t, x, val):
i = node()
i.data = val
if t is none:
t = i
i.next = none
else:
i.next = x.next
x.next = i
return t
陣列與鍊錶
陣列和鍊錶簡介 在計算機中要對給定的資料集進行若干處理,首要任務是把資料集的一部分 當資料量非常大時,可能只能一部 分一部分地讀取資料到記憶體中來處理 或全部儲存到記憶體中,然後再對記憶體中的資料進行各種處理。例如,對於資料集 s,要求 s 中元素的和,首先要把資料儲存到記憶體中,然後再將記憶體中的...
陣列與鍊錶
陣列,在記憶體上給出了連續的空間.鍊錶,記憶體位址上可以是不連續的,每個鍊錶的節點包括原來的記憶體和下乙個節點的資訊 單向的乙個,雙向鍊錶的話,會有兩個 優點 使用方便 查詢效率 比煉表高,記憶體為一連續的區域 缺點 大小固定,不適合動態儲存,不方便動態新增 優點 可動態新增刪除 大小可變 缺點 只...
陣列與鍊錶
使用陣列意味著所有待辦事項在記憶體中都是相連的 緊靠在一起的 所以在陣列中新增新元素也可能很麻煩。如果沒有了空間,就得移到記憶體的其他地方,因此新增新元素的速度會很慢。一種解決之道是 預留座位 即便當前只有3個待辦事項,也請計算機提供10個位置,以防需要新增待辦事項。這樣,只要待辦事項不超過10個,...