我需要一种方法来仅使用数组而不使用C中的指针来实现双向链接列表。ThomasCormen中提到了这一点,但我想不出一种实际实现它的方法。
答案 0 :(得分:1)
在C中,通常不使用通常在地址空间中索引的数字的指针,而在数组中使用整数索引作为对上一个和下一个成员的引用,例如
struct Element
{
int next;
int prev;
// Any data you want for this element in the list
};
struct Element array[MAX_ELEMENTS];
然后针对数组中索引为i
的元素,列表中的下一个元素为
array[array[i].next]
,上一个元素是
array[array[i].prev]
使用NULL
表示“空”索引,而不是使用-1
表示空指针。