双链表的数组实现

时间:2019-01-31 15:07:03

标签: c arrays linked-list

我需要一种方法来仅使用数组而不使用C中的指针来实现双向链接列表。ThomasCormen中提到了这一点,但我想不出一种实际实现它的方法。

1 个答案:

答案 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表示空指针。