所以我试图构建一个B树,使用两种类型的节点,单个密钥节点(kNode)和包含基于订单大小(sibNode)的多个kNode的超级节点。我一直遇到的问题是,为了使这个设置工作,我需要sibNode中的kNode指针(例如pkey和smallestPnt)以及kNode中的sibNode指针(例如nxtkey和child)。无论我首先放置哪个typedef,都会为这些指针返回错误未知类型(例如,按此顺序返回:错误:未知类型名称'kNode')。如果有人能就如何避免这个错误给我一些建议,那将是值得赞赏的。
typedef int keyT;
//B-Tree Node typdef
typedef struct
{
int size;
int cursor;
kNode* pkey;
kNode* smallestPnt;
}sibNode;
//key Node typedef
typedef struct
{
keyT* key;
sibNode* nxtkey;
sibNode* child;
}kNode;
答案 0 :(得分:4)
定义sibNode
类型后,尚未定义kNode
类型。
使用这样的前瞻声明:
struct kNode; //this is forward declaration
typedef struct
{
int size;
int cursor;
struct kNode* pkey; //here
struct kNode* smallestPnt; //here
}sibNode;
typedef struct kNode //and here
{
keyT* key;
sibNode* nxtkey;
sibNode* child;
}kNode;