这是我的情况。我有一个哈希表和一个节点作为我的结构。节点有指向其他节点的指针(链表),哈希表是一个节点数组。我将这两个结构定义为:
typedef struct node{
char* hashStr;
struct node* nextNode;
}node;
typedef struct hashTable{
int emptyNodes[16];
node* pods[16];
}hashTable;
我已将链表中的最大节点数定义为 32。每当我向链表添加节点时,我检查链表的长度是否为 32。如果长度为 32,我想添加另一个节点,我想删除链表中的第一个节点,并将新节点添加到后面,就像一个 FIFO 队列。
我的问题是删除第一个节点。我认为最合理的做法不是删除第一个节点,而是将节点指针放在 hashTable 中(即在某个键处(因为它是一个节点指针数组)),只需指向被引用的下一个节点就像nextNode
在node 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] 删除。
我来说两句