2010-06-24 57 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

相关问题