【发布时间】:2019-01-31 15:07:03
【问题描述】:
我需要一种方法来实现一个双向链表,在 C 中只使用一个数组而没有指针。Thomas Cormen 中提到了这一点,但我想不出一种方法来实际实现它。
【问题讨论】:
-
您需要一个结构数组,其中包含两个整数,即 prev 和 next 索引。
标签: c arrays linked-list
我需要一种方法来实现一个双向链表,在 C 中只使用一个数组而没有指针。Thomas Cormen 中提到了这一点,但我想不出一种方法来实际实现它。
【问题讨论】:
标签: c arrays linked-list
不要使用在 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 来表示“空”索引。
【讨论】: