如何在c#中创建节点

时间:2014-03-10 17:54:47

标签: c# c

我是c#的新手并从c切换到c#。我想把c等同于c#。同样我喜欢这样:

  temp = (struct Node*)malloc(sizeof(struct Node));

Node是:

struct Node 
{
    unsigned int symbol ;            
    int freq;
    struct Node * next,  * left, * right;   
}

在c#中,我使用class代替struct。 我试着这样做:

 Node temp = new Node();

Node除了它是一个类并使用公共(我确信这是正确的)之外是相同的。 如果我错了,你能帮我吗?它是否正确创建了与使用malloc()创建的节点等效的节点?

3 个答案:

答案 0 :(得分:4)

你的课应该看起来像

public class Node
{
    public unsigned int symbol;
    public int freq;
    public Node next;
    public Node left;
    public Node right;
}

如果您指定的nextleftright类似于

Node root = new Node();
root.next = new Node();

您将看到与您在C中所做的非常相似的行为。

存储由运行时自动管理,因此没有显式调用mallocfree的等效项。这一切都发生在幕后。

另外,作为一般规则,不要在C#中使用指针。如果您将代码标记为 unsafe ,则可以执行此操作,但很少有实例不安全代码是C#应用程序的正确路径

注意:该示例使用对类和字段的公共访问。您可能希望根据具体用途对其进行限制。

答案 1 :(得分:2)

对我而言看起来是正确的。

作为额外的奖励,它还会调用Node()的构造函数,如果你有一个并初始化值。

答案 2 :(得分:1)

class Node 
{
    public int symbol ;
    public int freq;
    public Node next;
}

class Program
{
    static void Main(string[] args)
    {
        Node temp = new Node() ;
        temp.symbol = 1;
        temp.freq = 2;
        temp.next = null;
    }
}