Работал ли со связным списком

«Работал ли со связным списком» — вопрос из категории Golang, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. Связный список — это структура данных, состоящая из узлов, где каждый узел содержит данные и ссылку на следующий узел. В Go можно реализовать так:

type Node struct {
    data int
    next *Node
}

type LinkedList struct {
    head *Node
}

func (l *LinkedList) Append(data int) {
    newNode := &Node{data: data}
    if l.head == nil {
        l.head = newNode
        return
    }
    current := l.head
    for current.next != nil {
        current = current.next
    }
    current.next = newNode
}

Основные операции:

  • Вставка/удаление: O(1) для головы, O(n) для других позиций
  • Поиск: O(n)
  • Не требует непрерывной памяти, но больше накладных расходов на хранение ссылок

Используется, когда важны частые вставки/удаления, а не доступ по индексу. В Go стандартной реализации нет, но есть container/list для двусвязных списков.