Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在C中具有指向结构节点的指针数组的结构节点_Java_C_Struct - Fatal编程技术网

Java 在C中具有指向结构节点的指针数组的结构节点

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

我正在用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{
    /* 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++编译器(或者更改标签和文本)!