【问题标题】:Array implementation of Doubly Linked List双向链表的数组实现
【发布时间】:2019-01-31 15:07:03
【问题描述】:

我需要一种方法来实现一个双向链表,在 C 中只使用一个数组而没有指针。Thomas Cormen 中提到了这一点,但我想不出一种方法来实际实现它。

【问题讨论】:

  • 您需要一个结构数组,其中包含两个整数,即 prev 和 next 索引。

标签: c arrays linked-list


【解决方案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 来表示“空”索引。

【讨论】:

  • (或者,出于效率原因,不要使用数组条目 0,因此零表示“没有下一个”或“没有上一个”。)
  • @PaulOgilvie 我想到了这一点,但它浪费了一个条目,因为速度可能只有边际或零增益。
猜你喜欢
  • 1970-01-01
  • 2021-06-13
  • 2021-11-18
  • 2011-06-03
  • 2018-03-14
  • 2014-07-01
  • 2012-05-10
  • 2013-02-22
相关资源
最近更新 更多