如何在c#中将此结构实现为没有指针的类?

Mik*_*ott 5 c# struct pointers class

列表的节点,其中每个元素指向下一个元素,列表的头部如下所示:

typedef struct Node {
   int value;
   Node* next;
   Node** head;
} Node;
Run Code Online (Sandbox Code Playgroud)

头可以改变,因此我们使用Node**头.我知道类是作为参考传递的,所以我可以像这样制作前2个属性:

class Node {
  int value;
  Node next;
  ???? 
}
Run Code Online (Sandbox Code Playgroud)

如何制作头属性?

Sea*_*n U 5

创建一个包装类来取代双指针:

class Reference<T>
{
    public T Value {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

  • 如果每个Node的头部都是Reference的同一个实例. (5认同)
  • 这是如何解决这个问题的呢?使用`Reference <Node>`仍然不会导致父节点的更改在本地反映出来...... (2认同)

Ree*_*sey 5

通常,这是通过传递对包含对象的引用来处理的.例如,如果这是针对链接列表,您可能会执行以下操作:

class Node
{
    int Value { get; set; }
    Node Next { get; set; }
    LinkedList list;

    Node Head { get { return list.Head; } }

    public Node(LinkedList parent)
    {
       this.list = parent;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样,当包含节点的实际列表的"head"元素发生更改时,类中的属性将自动反映新值.