2010-06-24 59 views
0

我想要做的是用my other question代表代碼。如何創建一個表的鏈表,一個表代表一組元素

基本上我需要在內存中保留一個元素表(結構),沒有固定數量的元素可以存在,但它很小,但我仍然不能使用數組。

而且我不想使用元素的鏈接列表,因爲我不想每次需要更改任何內容時都繼續添加和刪除元素。

相反,我想要做的是用一個malloc分配一塊內存,那塊內存就足夠大,可以放100個元素,如果在極少數情況下需要更多,我可以分配另一塊大塊的100個元素,並將其鏈接到原來的....

這是一個好主意嗎?這種結構有沒有名字?它有點像動態擴展數組?人們真的使用這個嗎?或者我只是在破解?如果這是個壞主意,你推薦使用什麼?

感謝

typedef struct Tb{ 
    POINT points; 
    POINT *next; 
} TABLE; 

typedef struct Pt{ 
    int x; 
    int y; 
}POINT; 


POINT *mypoints; 
int a = 10; 
int b = 1000; 

mypoints = (POINT*) malloc (100 * sizeof(POINT)); 

for (int i =0; i < 100; i++) { 
    mypoints->x = a++; 
    mypoints->y = b++; 
    ++mypoints; 
} 

回答

1

這樣的分配方案已經從早期的Unix文件系統Python的內部列表中分配使用,隨處可見。

密碼!

+0

好的,謝謝,它叫什麼?我可以使用任何術語在Google上查找其他一些真實世界的示例,也許是一些示例代碼? 將POINT * next元素添加到我的POINT結構中會是一個糟糕/好主意嗎? – emge 2010-06-24 03:18:07

+0

@emge如果您使用列表或樹進行跟蹤,則稱它爲堆。一個Vector,如果你有一個動態數組 – 2010-06-24 03:26:13

相關問題