Java 在C中具有指向结构节点的指针数组的结构节点
我正在用C实现多位trie。我通常用JAVA编写代码,在用C声明和初始化节点结构时遇到困难 在Java中,节点类似于:Java 在C中具有指向结构节点的指针数组的结构节点,java,c,struct,Java,C,Struct,我正在用C实现多位trie。我通常用JAVA编写代码,在用C声明和初始化节点结构时遇到困难 在Java中,节点类似于: private static class Node { private String nextHop = null; private Node[] pointer = new Node[(int)Math.pow(2, STRIDE)]; } 在C中,我是这样做的: #define STRIDE 3 struct MtNode
private static class Node {
private String nextHop = null;
private Node[] pointer = new Node[(int)Math.pow(2, STRIDE)];
}
在C中,我是这样做的:
#define STRIDE 3
struct MtNode{
/* nodes stores pointers to its 2^stride child nodes.*/
MtNode* nodes; // 2^stride = 2^3 = 8
int nexthop;
};
/* Initialize binary trie node */
MtNode* init_mtnode(){
MtNode *ret = (MtNode *)malloc(sizeof(MtNode));
int size = (int)pow(2,STRIDE);
ret->nodes = (MtNode *)malloc( sizeof(MtNode) * size );
for (int i=0; i<(int)pow(2,STRIDE); ++i)
(ret->nodes[i]) = NULL;
ret->nexthop = -1;
return ret;
}
#定义步幅3
结构MtNode{
/*节点存储指向其2^子节点的指针*/
MtNode*nodes;//2^stride=2^3=8
int nexthop;
};
/*初始化二进制trie节点*/
MtNode*init_MtNode(){
MtNode*ret=(MtNode*)malloc(sizeof(MtNode));
int size=(int)pow(2,步幅);
ret->nodes=(MtNode*)malloc(sizeof(MtNode)*size);
对于(int i=0;索引节点[i])=NULL;
ret->nexthop=-1;
返回ret;
}
初始化节点时,init_mtnode()函数中出现错误。请提供帮助并提出正确的实施建议。停止初始化
MtNode ret
,就像您提到的ret->nodes
MtNode* init_mtnode(){
MtNode *ret ;
int size = (int)pow(2,STRIDE);
ret->nodes = (MtNode *)malloc( sizeof(MtNode) * size );
for (int i=0; i<(int)pow(2,STRIDE); ++i)
ret->nodes[i].nodes = NULL
ret->nexthop = -1;
return ret;
}
MtNode*init_MtNode(){
MtNode*ret;
int size=(int)pow(2,步幅);
ret->nodes=(MtNode*)malloc(sizeof(MtNode)*size);
对于(int i=0;索引节点[i]。节点=NULL
ret->nexthop=-1;
返回ret;
}
停止初始化MtNode-ret
,就像您提到的ret->nodes
MtNode* init_mtnode(){
MtNode *ret ;
int size = (int)pow(2,STRIDE);
ret->nodes = (MtNode *)malloc( sizeof(MtNode) * size );
for (int i=0; i<(int)pow(2,STRIDE); ++i)
ret->nodes[i].nodes = NULL
ret->nexthop = -1;
return ret;
}
MtNode*init_MtNode(){
MtNode*ret;
int size=(int)pow(2,步幅);
ret->nodes=(MtNode*)malloc(sizeof(MtNode)*size);
对于(int i=0;索引节点[i]。节点=NULL
ret->nexthop=-1;
返回ret;
}
#定义步幅3
结构MtNode{
/*节点存储指向其2^子节点的指针*/
/*您使用的是C,所以这里需要struct*/
结构MtNode*节点;//2^stride=2^3=8
int nexthop;
};
/*初始化二进制trie节点*/
/*在C语言中,MtNode需要struct*/
结构MtNode*init_MtNode(){
struct MtNode*ret=malloc(sizeof(struct MtNode));
int size=(int)pow(2,步幅);
ret->nodes=malloc(sizeof(struct MtNode)*size);
for(int i=0;索引节点[i]的类型为struct MtNode,而不是struct MtNode**/
/*(ret->nodes[i])=NULL*/
{
ret->nodes[i]。nodes=NULL;
ret->nodes[i].nexthop=-1;
}
ret->nexthop=-1;
返回ret;
}
#定义步幅3
结构MtNode{
/*节点存储指向其2^子节点的指针*/
/*您使用的是C,所以这里需要struct*/
结构MtNode*节点;//2^stride=2^3=8
int nexthop;
};
/*初始化二进制trie节点*/
/*在C语言中,MtNode需要struct*/
结构MtNode*init_MtNode(){
struct MtNode*ret=malloc(sizeof(struct MtNode));
int size=(int)pow(2,步幅);
ret->nodes=malloc(sizeof(struct MtNode)*size);
for(int i=0;索引节点[i]的类型为struct MtNode,而不是struct MtNode**/
/*(ret->nodes[i])=NULL*/
{
ret->nodes[i]。nodes=NULL;
ret->nodes[i].nexthop=-1;
}
ret->nexthop=-1;
返回ret;
}
<代码> > RTE->节点[N] =节点,RTE->节点[i] .NEXTHOP=-1;<代码>不要在C中丢弃<代码> MalOCc < /Calp>和朋友的结果,代码应该已经生成了错误,用于<代码> MTNOTH*节点;<代码>。编译C代码,不是C++编译器(或更改标签和文本)!<代码> RTE->节点[i]。节点= null;RTE->节点[I]NEXTHOP=-1;不要在C中转换<代码> MALOC<<代码>好友的结果,代码应该已经生成了<代码> MTNONT*NOTS.<代码>的错误。使用C编译器编译C代码,而不是C++编译器(或者更改标签和文本)!