Как реализовать эту структуру как класс без указателей в C #? - PullRequest
5 голосов
/ 20 декабря 2011

Узел списка, где каждый элемент указывает на следующий элемент, а заголовок списка будет выглядеть так:

typedef struct Node {
   int value;
   Node* next;
   Node** head;
} Node;

головка может меняться, поэтому мы использовали Node ** head. Я знаю, что классы передаются как ссылки, поэтому я могу сделать первые 2 атрибута, как это:

class Node {
  int value;
  Node next;
  ???? 
}

Как сделать атрибут головы?

Ответы [ 2 ]

5 голосов
/ 20 декабря 2011

Как правило, это обрабатывается путем передачи ссылки на содержащий объект.Если это для связанного списка, например, вы можете сделать:

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;
    }
}

Таким образом, когда элемент «head» фактического списка, содержащего узел, изменится, свойство в классе будет автоматически отражатьновое значение.

5 голосов
/ 20 декабря 2011

Создайте класс-оболочку вместо двойного указателя:

class Reference<T>
{
    public T Value {get; set;}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...