2017-10-21 10 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'キーワードの後に​​タグを追加するか、structを' typedef'する)。 '_root'というポインタを宣言し、' NULL'に初期化します。 – user3386109

答えて

2

あなたの構造体は、(全体のコードが、それは大丈夫です1つの.cファイル内にある場合)を使用すると、複数の翻訳単位を持っている場合(構造体の名前としてAvlNode)

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

staticを使用しないでくださいする必要があります。

複数の翻訳単位にはexternを使用してください。

あなたのヘッダーにextern struct AvlNode *root;を宣言してください。

struct AvlNode *root = NULL; ".c"ファイルに入力してください。

関連する問題