将 class 从 C#(AVL 树节点)转换为 C

Converting a class from C# (AVL tree node) to C

我用 C# 制作了一个功能性非递归 AVL 树。该节点如下所示:

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

 }static AvlNode _root = null;

public消失了,添加指针。

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

但是我用 static AvlNode _root = null; 做什么?

我用它来跟踪树根。

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

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

如果您有多个翻译单元,请不要使用 static(如果整个代码在一个 .c 文件中就可以)。

对多个翻译单元使用extern

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

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