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

infa_1 / 8. Списки и операции над ними

.doc
Скачиваний:
37
Добавлен:
05.06.2015
Размер:
1.97 Mб
Скачать

8. Списки и операции над ними

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

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

Описание типа элемента списка:

Список задается указателем на свой первый элемент. Для создаваемого списка назовем этот элемент lst. Пусть каждый элемент этого списка содержит в качестве данных строку. Создание списка будет содержать следующие шаги:

1)присваивание указателем lst значений nil

lst => [nil]; lst:=nil

в результате создается пустой список, не имеющий ни одного элемента. Затем будем добавлять элементы в начало списка. Для этого потребуется рабочий указатель p. Добавление элемента в начало списка lst можно осуществить при помощи, следующей последовательности операторов:

new (p);{выделение памяти для элемента списка}

real (p^data); {читать данные для элемента списка}

lst:=p; {указатель на начало, на добавленный элемент}

2) lst => [nil]

new(p)

p =>[ ]

3) lst => [nil]

p =>[ данные ]

read (p^data)

4) p => [слово] => [nil]<= lst

p^next: =lst

5) lst: = p;

lst => [слово [nil]] <=p

Схема добавления элементов в начало не пустого списка:

Схема добавления p после q:

Удаление из списка элемента p:

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

Стэк - линейный список, в котором добавление и исключение возможны только в конце.

Очередь - линейный список, элементы которого добавляются только в конец, а исключаются только из начала.