給定大小1000個一維陣列,我們如何快速的分配空閒的下標,同時釋放的時候也能快速歸還,常規的方法我們使用for迴圈,使用的資源結構體裡面增加使用flag標記,標誌該資源使用,但是當陣列資源多的時候,效能下降很嚴重。我們可以設計乙個類似的陣列鍊錶管理相應的陣列下標,申請相應大小加2的1002容量記憶體管理鍊錶,前1000個依次初始化從1到1000,後面到時第二個初始化為0,最後乙個初始化成1000。
/*1.管理鍊錶初始化*/
for( i =
0; i < max_array_num; i++
) pmng[max_array_num]=0
; pmng[max_array_num +1]
= max_array_num;
/*2.列印單向鍊錶*/
showmnginfo
(pmng)
;for
(i =
0; i < max_array_num+
1;i++
)else
}showmnginfo
(pmng)
;for
(i =
1; i < max_array_num+
1;i++)}
showmnginfo
(pmng)
;}
演算法 陣列和鍊錶
注 本文僅為筆記。原文 一維陣列記憶體定址公式 對於二維陣列 a n a i addr base addr i type size 二維陣列記憶體定址公式 對於二維陣列 a m n a i j addr base addr i n j type size 三維陣列記憶體定址公式 對於三維陣列 a m...
演算法 陣列和鍊錶
注 本文僅為筆記。原文 一維陣列記憶體定址公式 對於二維陣列 a n a i addr base addr i type size 二維陣列記憶體定址公式 對於二維陣列 a m n a i j addr base addr i n j type size 三維陣列記憶體定址公式 對於三維陣列 a m...
05 陣列與鍊錶演算法
靜態資料結構 static data structure 陣列 使用連續分配的記憶體空間 contiguous allocation 來儲存有序表中的資料。讀取修改任一元素的時間都是固定的,刪除加入資料時需要移動大量的資料。在建立靜態資料結構的初期就必須宣告最大可能要占用的固定記憶體空間,因此容易造...