Открыть сервис

Список

Список — это структура данных или упорядоченное множество элементов, объединённых общим признаком, целью или контекстом, в котором каждый элемент может быть однозначно идентифицирован своим положением (индексом) или содержимым. В информатике список представляет собой абстрактный тип данных, реализующий последовательное хранение однотипных или разнотипных объектов, поддерживающий операции добавления, удаления и доступа к элементам. В повседневном употреблении термин «список» обозначает любой перечень записей — от простого перечисления дел до сложных каталогов и баз данных.

История

Идея упорядоченного перечисления объектов восходит к древнейшим письменным памятникам. Первыми списками в истории считаются шумерские глиняные таблички (около 3000 года до н. э.), содержащие перечни товаров, скота и людей для учёта хозяйственных операций. В античности списки использовались для составления каталогов библиотек (например, Александрийская библиотека), перечней имён (гражданские списки, списки солдат) и научных классификаций — так, Аристотель в «Категориях» создал одну из первых систематических классификаций сущностей.

В Средние века списки получили развитие в виде реестров земельных владений (Книга Страшного суда в Англии, 1086 год), инвентарных описей монастырей и списков должников. С развитием книгопечатания в XV веке распространились библиографические списки — прообразы современных каталогов и реферативных баз.

С появлением вычислительной техники в середине XX века понятие списка как структуры данных было формализовано: в 1958 году Джон Маккарти ввёл концепцию связного списка в языке Lisp, где список стал основной конструкцией для представления как данных, так и программ. В 1960-х годах в операционных системах Unix появились утилиты для работы со списками файлов и процессов (ls, ps). К концу XX века списки стали неотъемлемой частью языков программирования (массивы, списки в Python, Java, C++) и интерфейсов пользователя (списки в веб-формах, меню).

Классификация и виды

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

По способу реализации в программировании

  • Массив (Array) — непрерывная область памяти, где каждый элемент имеет фиксированный адрес. Обеспечивает быстрый доступ по индексу (O(1)), но вставка и удаление требуют сдвига элементов (O(n)). Пример: массивы в C, Java.
  • Связный список (Linked List) — последовательность узлов, каждый из которых содержит данные и ссылку на следующий (и, возможно, предыдущий) узел. Вставка и удаление выполняются за O(1) при известном положении, но доступ по индексу — O(n). Разновидности: односвязный, двусвязный, кольцевой.
  • Динамический массив (ArrayList, Vector) — массив, автоматически увеличивающий ёмкость при заполнении. Компромисс между скоростью доступа и гибкостью размеров. Реализован в Python (list), C++ (std::vector), Java (ArrayList).
  • Список на основе хеш-таблицы — структура, в которой элементам сопоставлены уникальные ключи, что позволяет быстро искать и обновлять записи.

По назначению в быту и документации

  • Список дел (to-do list) — перечень задач с отметками о выполнении. Используется в тайм-менеджменте.
  • Список литературы (библиографический список) — упорядоченный перечень источников, используемых в работе, оформленный по стандарту (ГОСТ, APA, MLA).
  • Список рассылки (mailing list)группа адресов электронной почты для отправки сообщений всем подписчикам одновременно.
  • Список покупок — перечень товаров, которые необходимо приобрести.
  • Список исключений (blacklist, whitelist) — перечень объектов, которым запрещён или разрешён доступ.
  • Избирательный список — перечень кандидатов на выборную должность или партийный список.

По структуре

  • Нумерованный список — элементы маркируются числами или буквами, подчёркивая порядок.
  • Маркированный список — элементы предваряются символом (точка, дефис, галочка), порядок не важен.
  • Чек-лист — список с флажками для отметки выполненных пунктов.
  • Древовидный список (список-меню)иерархическая структура, где подпункты вложены в родительские элементы.

Устройство и характеристики

В программировании список как абстрактный тип данных обычно включает следующие операции:

  • создание пустого списка;
  • добавление элемента (в начало, в конец, на заданную позицию);
  • удаление элемента (по значению или индексу);
  • получение элемента по индексу;
  • поиск элемента;
  • получение длины списка;
  • объединение двух списков.

Основные характеристики, влияющие на выбор реализации:

  • временная сложность операций (доступ, вставка, удаление, поиск);
  • потребление памяти (накладные расходы на хранение ссылок или служебных полей);
  • поддержка дубликатов (могут ли присутствовать одинаковые элементы);
  • упорядоченность — сохраняется ли порядок вставки (у списков — да, у множеств — нет);
  • возможность сортировки — не все реализации поддерживают эффективную сортировку.

В бытовой документации основные характеристики списка — однозначность записей, логическая группировка, единый формат оформления и актуальность данных.

Применение

Списки используются повсеместно во всех сферах деятельности.

В информатике и технологиях

  • Базы данных: таблицы SQL фактически представляют собой списки строк.
  • Операционные системы: списки процессов, файлов, разрешений.
  • Веб-разработка: списки (<ul>, <ol>) — элементы HTML-разметки; списковые структуры в JSON и XML.
  • Алгоритмы: списки лежат в основе очередей и стеков, списков смежности для графов.
  • Искусственный интеллект: списки признаков (feature lists) и обучающих примеров.

В науке и образовании

  • Библиографические перечни: списки литературы, ссылок, используемых материалов.
  • Классификаторы: списки видов, химических элементов, болезней (МКБ-10).
  • Списки задач и тем: учебные планы, экзаменационные билеты.

В повседневной жизни

  • Планирование: ежедневные и еженедельные списки дел.
  • Торговля: прайс-листы, списки заказов, инвентаризационные описи.
  • Документооборот: реестры документов, списки сотрудников, списки избирателей.
  • Путешествия: списки вещей, маршрутные листы.

В управлении и администрировании

  • Кадровые списки: штатное расписание, списки отсутствующих, резюме.
  • Финансовые списки: ведомости зарплаты, перечни дебиторов и кредиторов.
  • Нормативные списки: перечни запрещённых веществ, объектов культурного наследия.

Интересные факты

  • Самый длинный официальный список в мире — перечень видов живых организмов, поддерживаемый Международным комитетом по таксономии. Он включает более 1,5 миллиона описанных видов.
  • В математике бесконечные списки (например, натуральный ряд чисел) изучаются в теории множеств и комбинаторике.
  • В языке программирования Lisp сам код программы представляется в виде списков, что дало языку название (LISt Processor).
  • Списки как форма представления данных критиковались некоторыми учёными за «линейность мышления»: в 1990-х годах появились альтернативные структуры — ментальные карты (mind maps).
  • В психологии известен эффект «спискового опьянения»: составление длинных списков задач создаёт иллюзию продуктивности без реального выполнения дел.
  • Списки используются в SEO-оптимизации: маркированные и нумерованные списки на веб-страницах улучшают читабельность и ранжирование в поисковых системах.

Критика

Несмотря на широкое распространение, списки имеют ограничения. В программировании списки на основе массивов неэффективны при частых вставках и удалениях, а связные списки требуют дополнительной памяти на ссылки и медленны при произвольном доступе. В быту критика списков связана с психологическим давлением: чрезмерное увлечение списками может вести к стрессу из-за невыполненных пунктов и снижению гибкости планирования. В научных публикациях списки литературы иногда критикуются за неполноту или необъективность (так называемый «эффект цитатного списка», когда авторы цитируют работы соратников, игнорируя конкурирующие исследования).

Источники

  • Кнут Д. Искусство программирования. Том 1. Основные алгоритмы. — М.: Вильямс, 2006.
  • Кормен Т., Лейзерсон Ч., Ривест Р., Штайн К. Алгоритмы: построение и анализ. — М.: Вильямс, 2013.
  • Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. — М.: Вильямс, 2000.

-ГОСТ Р 7.0.100–2018 «Библиографическая запись. Библиографическое описание».

  • Ожегов С. И., Шведова Н. Ю. Толковый словарь русского языка. — М.: Азбуковник, 1999.
  • Чубукова С. Г. Основы алгоритмизации и программирования. — СПб.: Питер, 2017.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →