在已插入订单元素中打印哈希表

时间:2019-05-07 20:20:01

标签: c list pointers printing hashtable

所以我有一个很好的哈希表,但是我需要一种以插入顺序打印它的元素的方法。我一直在考虑如何执行此操作,但我真正想做的唯一方法是在带有元素的哈希表之外创建一个列表并打印该列表,但我试图避免这样做,因为这会破坏整个列表做一个哈希表的目的。哈希表的每个元素都是NULL(我不想打印)或链接列表。谢谢!

不知道这是否有帮助,但是在链接列表中,每个节点都有一个结构和下一个指针。

编辑:我还必须删除数组元素中链表中的节点,因此这会使跟踪顺序更加困难。

1 个答案:

答案 0 :(得分:0)

哈希表无法跟踪您插入内容的顺序。

但是,您可以相当轻松地扩展实现以跟踪此情况。由于使用链接列表进行链接,因此可以保留一个指向节点的指针数组,并且每当向哈希表添加元素时,都将指向该节点的指针添加到数组的后面。

类似这样的东西(尽管显然取决于您的确切实现)

struct HT {
    size_t count, capacity;
    void **elements;         // just an example of a possible implementation.
    LL **order;           // keep track of insertion order here.
}
在这种情况下,

order应该在链接列表之一中存储指向元素的指针。遍历此数组将按插入顺序为您提供元素。只要确保在添加或删除元素时就更新order