2. Содержание
• Назначение
• Основные положения
• Представление элементов списка
• Операции над элементами списка
• Операции над списками
Выход
3. Список, как динамическая структура
данных, применяется в тех случаях, когда
трудно или вообще невозможно
предсказать число
объектов, обрабатываемых программой, и
поэтому традиционные структуры данных
(например, массивы), для которых
требуется заранее определить
максимальное количество
элементов, неприменимы.
Содержание Далее
4. first inf next inf next inf next
nil
Основные положения
• Все элементы списка имеют один тип.
• Они должны иметь информационную часть
(данные) и указатель на следующий элемент.
• На первый элемент списка должен ссылаться
указатель, который и определяет имя списка.
• Поле-указатель последнего элемента
однонаправленного линейного списка должен
равняться nil.
• Число элементов списка называется его
длиной и заранее не определено.
• Список, не имеющий элементов, называется
пустым (first = nil).
Содержание Далее
5. Для представления элементов списка
используется комбинированный тип данных -
ЗАПИСИ
type <тип указателя> = ^ <тип элемента>;
<тип элемента> = record
<имя поля 1> : <тип поля 1>;
информационная <имя поля 2> : <тип поля 2>;
часть
. . .
<имя поля N> : <тип поля N>;
указатель на
следующий элемент <имя поля-указателя> : <тип указателя>;
end;
Здесь используется рекурсивное описание типов.
Пример
Содержание Далее
6. ПРИМЕР
type elsp = ^ elem;
elem = record
inf : integer;
next : elsp;
end;
var first : elsp;
Содержание Далее
7. Операции над элементами списка
Доступ к первому элементу осуществляется через
указатель на список.
first ^.inf : = 5;
if first ^.next < > nil
then first ^.next^.inf := 12;
inf next inf next inf next
first
Содержание Далее
8. Операции над элементами списка
Для доступа ко всем элементам списка (включая
и первый) можно использовать указатель, роль
которого – ссылаться на текущий элемент.
var first, tek : elsp;
begin
{рассматривается список из предыдущего примера}
tek : = first;
tek^.inf : = 51;
tek : = tek^.next; переход к следующему элементу
tek^.inf : = 21;
inf next inf next inf next
first 5
51 12
21
tek
Содержание Далее
9. Операции над списками
• Создание списка
• Вывод списка
• Поиск элементов
• Удаление элементов
• Сортировка списка
Содержание
10. Создание списка
Два варианта:
- последовательное добавление элементов друг за
другом, начиная с первого (добавление в конец);
- создание упорядоченного списка (поиск и
добавление).
При заполнении информационной части элементов
списка данные могут:
а) вводиться с клавиатуры;
б) считываться из файла;
в) вычисляться.
Задание
Содержание Далее
11. Создание списка
Задание
Создать список из N элементов путем
последовательного добавления элементов друг
за другом.
Ожидаемый результат:
Пусть N = 4
nil
first 7 3 8 5
Указания:
1. Данные вводятся с клавиатуры.
2. Разработать функцию создания списка из N
элементов.
Содержание Далее
12. Вывод списка
Положения:
- на экран выводится непустой список;
- список выводится поэлементно;
- условие окончания процесса – вывод последнего
элемента (количество элементов не известно).
Задание: Разработать процедуру вывода списка на
экран
Содержание Далее
13. Поиск элементов
Два варианта поиска:
- поиск всех элементов, удовлетворяющих заданному
условию;
- поиск одного элемента, удовлетворяющего заданному
условию.
Значение для условия поиска может быть:
а) задано как константа;
б) введено с клавиатуры;
в) вычислено;
г) равно значению одного из элементов.
Способы обработки найденных элементов:
а) вывод на экран или в файл;
б) редактирование;
в) подсчет количества.
Содержание Далее
14. Поиск всех элементов
Задание
Разработать алгоритм поиска в списке всех
элементов, больших заданного значения key.
nil
first 35 10 81 54 7
Указания:
1. Разработать функцию поиска всех элементов
списка, удовлетворяющих заданному условию.
2. Значение key задается в основной программе.
3. Проверка факта нахождения элементов
осуществляется в основной программе.
Содержание Далее
15. Поиск одного элемента
Задание
Разработать алгоритм поиска в списке одного
элемента, равного заданному значению key.
nil
first 35 10 81 54 7
Указания:
1. Разработать функцию поиска элемента списка,
удовлетворяющего заданному условию.
2. Значение key задается в основной программе.
3. Проверка факта нахождения элемента и его
возможная обработка осуществляется в основной
программе.
Содержание Далее