Назад к вопросам
Junior
89
questionbank

Что такое односвязный список?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Односвязный список — это динамическая структура данных, состоящая из узлов (нод). Каждый узел (кроме последнего) содержит данные и ссылку на следующий узел. Последний узел имеет пустую ссылку.

Основные характеристики:

  • Узлы: Каждый узел содержит значение и указатель на следующий узел.
  • Голова (Head): Указатель на первый узел списка.
  • Хвост (Tail): Указатель на последний узел.
  • Последовательность: Элементы расположены в определенной последовательности.
  • Прямой доступ: Доступ к элементам возможен только последовательно, начиная с головы.
  • Динамический размер: Размер списка может изменяться во время выполнения программы.

Преимущества:

  • Эффективная вставка и удаление элементов в начале списка.
  • Экономия памяти по сравнению с массивами при непредсказуемом размере данных.

Недостатки:

  • Медленный доступ к элементам по индексу (требуется обход с начала).
  • Требует дополнительной памяти для хранения указателей.

Простая реализация на PHP:

<?php

class Node {
    public $data;
    public $next;

    public function __construct($data, $next = null) {
        $this->data = $data;
        $this->next = $next;
    }
}

class SinglyLinkedList {
    public $head;

    public function __construct() {
        $this->head = null; // Список изначально пуст
    }

    // Добавление элемента в начало списка
    public function prepend($data) {
        $newNode = new Node($data, $this->head);
        $this->head = $newNode;
    }

    // Простой вывод элементов списка
    public function display() {
        $current = $this->head;
        while ($current !== null) {
            echo $current->data . " ";
            $current = $current->next;
        }
        echo "\n";
    }
}

// Пример использования
$list = new SinglyLinkedList();
$list->prepend(10);
$list->prepend(20);
$list->prepend(30);

$list->display(); // Вывод: 30 20 10 
?>

Применяется в различных алгоритмах и структурах данных, например, в стеках и очередях.