2017-10-21 68 views
0

我在C#中制作了一个功能非递归AVL树。该节点看起来像这样:将C#(AVL树节点)中的类转换为C

class AvlNode 
{ 
    public int data; 
    public int balance; 
    public AvlNode left; 
    public AvlNode right; 
    public AvlNode parent; 

}static AvlNode _root = null; 

公众消失,添加指针。

struct 
{ 
    int data; 
    int balance; 
    struct AvlNode *left; 
    struct AvlNode *right; 
    struct AvlNode *parent; 
} 

但是,我如何处理static AvlNode _root = null;

我用它来跟踪树根。

+0

首先给结构一个名字(或者在'struct'关键字后加一个标签,或者''typedef'结构体)。然后声明一个叫做_root的指针并将它初始化为NULL。 – user3386109

回答

2

你的结构应该是(AvlNode作为结构的名称)

struct AvlNode 
{ 
    int data; 
    int balance; 
    struct AvlNode *left; 
    struct AvlNode *right; 
    struct AvlNode *parent; 
} 

不要使用static如果你有多个翻译单元(如果整个代码是一个.C文件,那么它是确定)。对于多个翻译单元,使用extern

在您的标题中声明extern struct AvlNode *root;

struct AvlNode *root = NULL;在您的“.c”文件中。