如何使用自引用结构定义(在 C 中)?

火焰王子

这是我的情况。我有一个哈希表和一个节点作为我的结构。节点有指向其他节点的指针(链表),哈希表是一个节点数组。我将这两个结构定义为:

typedef struct node{
    char* hashStr;
    struct node* nextNode;
}node;

typedef struct hashTable{
   int emptyNodes[16];
   node* pods[16];
}hashTable;

我已将链表中的最大节点数定义为 32。每当我向链表添加节点时,我检查链表的长度是否为 32。如果长度为 32,我想添加另一个节点,我想删除链表中的第一个节点,并将新节点添加到后面,就像一个 FIFO 队列。

我的问题是删除第一个节点。我认为最合理的做法不是删除第一个节点,而是将节点指针放在 hashTable 中(即在某个键处(因为它是一个节点指针数组)),只需指向被引用的下一个节点就像nextNodenode struct. 我不能这样做,因为nextNode不是struct.

我试过这个:

(*addr).pods[key] = (*addr).pods[key].nextNode;

我收到错误:

error: request for member 'nextNode' in something not a structure or union

我理解错误,但我不确定如何修复它。我在 stackoverflow 上找到了这个,但我不确定如何将它应用到我的工作中(如果我可以的话):

为什么我会从这段代码中得到“非结构体或联合体中的成员请求”?

马修·布鲁彻
(*addr).pods[key] = (*addr).pods[key]->nextNode;

pods是一个指针数组。获得指针后,您需要取消对它的引用以访问底层对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章