Что такое узел (звено) связного списка?

Ответ

Узел (или звено, node) — это фундаментальный строительный блок связного списка. Каждый узел содержит две основные части:

  1. Данные (Value): полезная информация, которую хранит узел.
  2. Указатель (Next): ссылка на следующий узел в списке. У последнего узла этот указатель равен nil.

Реализация в Go (односвязный список)

В Go узел обычно реализуется с помощью структуры, которая содержит поле с данными и указатель на саму себя.

// Node представляет узел в односвязном списке
type Node struct {
    Value int
    Next  *Node
}

// LinkedList хранит указатель на первый узел (голову списка)
type LinkedList struct {
    Head *Node
}

Пример создания списка 1 -> 2:

// Создаем узлы
node1 := &Node{Value: 1}
node2 := &Node{Value: 2}

// Связываем их: node1 указывает на node2
node1.Next = node2

// Создаем список и указываем его голову
list := &LinkedList{Head: node1}

Вариация: узел двусвязного списка

В двусвязном списке узел также хранит указатель на предыдущий элемент, что позволяет перемещаться по списку в обе стороны.

// DoublyLinkedNode представляет узел в двусвязном списке
type DoublyLinkedNode struct {
    Value int
    Next  *DoublyLinkedNode
    Prev  *DoublyLinkedNode // Указатель на предыдущий узел
}