Информация об изменениях

Сообщение Re[25]: C# [Proposal] init block for safe initialization of от 29.12.2025 17:37

Изменено 29.12.2025 18:02 Serginio1

Re[25]: C# [Proposal] init block for safe initialization of
Здравствуйте, pilgrim_, Вы писали:


S>>Нет не затыкает! Ибо для крайних узлов это не null!

S>>Устал писать. Для последней ноды Next = Node.EmptyNode для первой Previous = Node.EmptyNode


_>Влад в том числе о таких циклах и говорил как я понял (на гитхабе правда пример не дописанный для узлов, но из контекста вроде всё понятно).


Это классический пример двухнаправленного списка. Или двоичных деревьев.

С полностью циклическими графами я дело не имел. Всегда есть тупики.

У него пример как раз

init (var root = new TreeNode(), var child1 = new TreeNode(), var child2 = new TreeNode())
{
    root.Left = child1;
    root.Right = child2;
    
    SetParent(child1, root);
    SetParent(child2, root);
    
    void SetParent(TreeNode child, TreeNode parent)
    {
        child.Parent = parent; // Parent is a non-nullable property
    }
}


Где для child Left и Right?

Сlass Node
{
    public required Node Next { get; set; }
    public required Node Previous { get; set; }
}

init (var node1 = new Node(), var node2 = new Node())
{
    node1.Next = node2;
    node2.Previous = node1;
}


где для node2.Next и node1.Previous ?
Re[25]: C# [Proposal] init block for safe initialization of
Здравствуйте, pilgrim_, Вы писали:


S>>Нет не затыкает! Ибо для крайних узлов это не null!

S>>Устал писать. Для последней ноды Next = Node.EmptyNode для первой Previous = Node.EmptyNode


_>Влад в том числе о таких циклах и говорил как я понял (на гитхабе правда пример не дописанный для узлов, но из контекста вроде всё понятно).


Это классический пример двухнаправленного списка. Или двоичных деревьев.

С полностью циклическими графами я дело не имел. Всегда есть тупики.

У него пример как раз

init (var root = new TreeNode(), var child1 = new TreeNode(), var child2 = new TreeNode())
{
    root.Left = child1;
    root.Right = child2;
    
    SetParent(child1, root);
    SetParent(child2, root);
    
    void SetParent(TreeNode child, TreeNode parent)
    {
        child.Parent = parent; // Parent is a non-nullable property
    }
}


Где для child Left и Right?

Сlass Node
{
    public required Node Next { get; set; }
    public required Node Previous { get; set; }
}

init (var node1 = new Node(), var node2 = new Node())
{
    node1.Next = node2;
    node2.Previous = node1;
}


где для node2.Next и node1.Previous ?


Опять же варианты кода деревья пустые без узлов?