Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture4_PAS.doc
Скачиваний:
17
Добавлен:
08.12.2018
Размер:
78.85 Кб
Скачать
    1. 2.4. Линейные связанные структуры.

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

Удобным способом хранения динамических множеств являются списки.

Набор базисных операций над динамическими множествами:

  1. создание пустого множества;

  2. переход к первому, последнему, следующему или предыдущему элементу множества (этот элемент становится текущим) – получение доступа к k-му элементу множества;

  3. извлечение значения текущего элемента – считывание значения;

  4. замена значения текущего элемента;

  5. добавление элемента в начало, в конец или перед/после текущего элемента – вставка нового элемента множества;

  6. удаление k-го элемента множества;

  7. объединение в одно множество двух или более подмножеств;

  8. разбиение множества на два или более подмножеств;

  9. создание копии множества;

  10. определение количества элементов множества;

  11. нахождение максимального и минимального элементов множества;

  12. упорядочивание элементов множества;

  13. поиск элемента множества с данным значением.

2.5. Линейные списки.

Наиболее простой способ связать некоторое множество элементов – это организовать линейный список, который представляет собой дискретную, связанную, динамическую, рекурсивную информационную структуру.

Особенности линейных списков:

  • списки состоят из элементов одного и того же типа;

  • cвязь между элементами и доступ к элементам списка осуществляется при помощи указателей, поэтому, кроме информационных данных, каждый элемент списка должен иметь указатели на последующий или/и предшествующий элемент списка;

  • количество элементов списка заранее не задаётся, оно может изменяться в процессе выполнения программы;

  • размер одного элемента списка не может превышать 64 Кбайт;

  • при описании списка используется рекурсия;

  • доступ к элементам списка последовательный.

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

Линейный односвязный (однонаправленный) список

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

1. Объявление (описание) данных односвязного списка:

type

p_elem = ^element;

element = record

data: string[15];

next: p_elem;

end;

var

head, current, last : p_elem;

В данном случае элемент списка описан как запись, содержащая два поля data (для размещения данных) и next (типизированный указатель, который служит для организации списковой структуры).

В описании переменных описаны:

указатели head – указатель на заголовок списка,

current и last – указатели на текущий и последний элементы списка, позволяющие организовывать доступ к полям внутри элемента.

Соседние файлы в предмете Программирование на Pascal