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

Список

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

История и происхождение понятия

Понятие списка как упорядоченного перечня восходит к античным каталогам, инвентарям и переписным листам — например, к спискам римских консулов или к индексам трудов Аристотеля. В математике ещё в XIX веке использовались «списки» как синоним перечня (sequence), но систематическое изучение формальных свойств началось с работ по алгебре и комбинаторике. В computer science термин «список» вошёл в обиход в 1950-х годах благодаря развитию языков программирования: в Lisp (1958) список стал основной структурой данных, на которой строится весь язык. Джон Маккарти и его коллеги в MIT использовали двухзвенные узлы с указателями на следующий элемент, что заложило основы для функционального и процедурного использования списков. С тех пор понятие списка распространилось на все отрасли программирования, теории баз данных (списки значений, списки полей) и на повседневный документооборот (списки рассылки, списки задач).

Классификация списков

По способу хранения и доступа

По правилам доступа и упорядоченности

По структуре узла

Устройство и основные операции

Односвязный список (в виде кода на C-подобном языке)

Типичная структура узла: ``c struct Node { int data; struct Node* next; }; `` Основные операции:

В языках программирования высокого уровня (Python, Java, C#) списки встроены как динамические массивы (списки с произвольным доступом, фактически — массивы), а не как связные списки. Однако классы LinkedList (Java), list из STL (C++), collections.deque (Python) предоставляют двусвязные или односвязные реализации.

Применение списков

В программировании

В повседневной и деловой сфере

В документообороте и законодательстве

Преимущества и ограничения

Достоинства

Недостатки

Реализации в популярных языках

Математическая формализация

В теории формальных языков и комбинаторике список (sequence) — это функция вида \( f: \mathbb{N}_{<n} \to A \), где \( n \) — количество элементов, а \( A \) — множество возможных значений. Для бесконечных списков (строго говоря, нереализуемых в памяти) используется обозначение \( A^{\omega} \) — множество всех последовательностей мощности алеф-нуль. Операции над списками включают конкатенацию, обращение (reverse), фильтрацию и свёртку (fold). В технической литературе списки часто рассматриваются как частный случай алгебраических типов или индуктивно определённых структур (типы данных «cons-ячейка» и «nil» в функциональных языках).

Список как специальный вид документа

В русском документообороте список — это официальный перечень объектов (лиц, предметов, событий), составленный в соответствии с установленными правилами. Списки бывают:

Для каждого списка определяются реквизиты: название, дата составления, порядок нумерации, подписи или гриф утверждения. Юридическое значение списка заключается в том, что он может выступать в качестве первичного документа учёта или служить основанием для финансово-хозяйственных операций.

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

На главную BFOmetr →