Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
50
Добавлен:
22.05.2015
Размер:
1.44 Mб
Скачать

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

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

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

Объявление - list<int> l1;

Добавление элемента – O(n) в худшем случае // Добавить элемент после 1ого

list<int> l(10); list<int>::iterator it = l.begin(); it++;

l.insert(it, 5); O(n)

Удаление элемента – в худшем случае // Удаление второго элемента

list<int> l(10);

list<int>::iterator second = l.begin(); second++;

l.erase(second);

Поиск – О(n)

Каждый элемент списка содержит информационную и ссылочную части.

Так как структура элемента списка неоднородна, то для его описания подходит только тип запись, который может иметь разнотипные поля.

Nil

Двунаправленный список

Nil

Nil

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

Пример

First

Иванов

Петров

Сидоров

3

 

4

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

Типы линейных списков

Стек

Очередь

Дек

Стек – это упорядоченный набор элементов, в котором добавление новых и удаление существующих производится с одного конца, называемого вершиной стека(top).