АБСТРАКТНЫЙ ТИП ДАННЫХ СПИСОК Лекция 1. Примеры списков списки магазинных покупок списки дел расписания поездов бланки заказов.

Презентация:



Advertisements
Похожие презентации
Основные абстрактные типы данных: списки В математике список представляет собой последовательность элементов определенного типа. Список представляется.
Advertisements

САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Реализация списков:динамические структуры ListList clasclas структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST.
САОД, кафедра ОСУ1 Реализация списков:динамические структуры ListList classclass структура одного элемента type LIST = celltype; celltype = record.
ЗАПИСЬ ВСПОМОГАТЕЛЬНЫХ АЛГОРИТМОВ НА ЯЗЫКЕ Паскаль НАЧАЛА ПРОГРАММИРОВАНИЯ.
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
Функции. Функция- это подпрограмма, которая вычисляет и возвращает некоторое значение. Функции описываются в разделе описаний следующим образом: Function.
МЕТОД ПОСЛЕДОВАТЕЛЬНОЙ ДЕТАЛИЗАЦИИ. ПРОЦЕДУРЫ И ФУНКЦИИ Урок 1.
Рекурсия Презентация разработана учителем информатики лицея 124 г.Барнаула Воловиковой Л.Л.
САОД, кафедра ОСУ ИК ТПУ1 Реализация списков:динамические структуры ListList classclass структура одного элемента type LIST = celltype; celltype.
Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Составление программ Разработка программ в среде Турбо- Паскаль.
СОРТИРОВКА ВСТАВКАМИ. Сортировка вставками – простой алгоритм сортировки, преимущественно использующийся в учебном программировании. К положительной стороне.
Множественный тип данных Множество в языке Паскаль – это ограниченный набор различных элементов одного (базового) типа, которые рассматриваются как единое.
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
Структуры (записи) Программирование на языке Паскаль.
Программирование на языке Паскаль. Часть II К. Поляков, Сумма выбранных элементов 1 Задача: заполнить массив случайными числами в интервале [-10,10]
Методы сортировки массива. Сортировкой или упорядочением массива называется расположение его элементов по возрастанию (или убыванию). Если не все элементы.
1 Массивы Массив – это упорядоченная последовательность, состоящая из фиксированного количества величин одного типа. Особенности: все элементы имеют один.
Тема: Комбинированный тип данных. Цель:. Комбинированный тип данных – это структурированный тип, состоящий из фиксированного числа компонент разного типа.
Транксрипт:

АБСТРАКТНЫЙ ТИП ДАННЫХ СПИСОК Лекция 1

Примеры списков списки магазинных покупок списки дел расписания поездов бланки заказов

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

Определение Математически, список (List) – последовательность из нуля или более элементов заданного типа (TElement). a 1, a 2,..., a n, где n 0 и каждый a i типа TElement.

Длина списка - количество элементов n. Если n 1, то a 1 называется первым элементом, а a n – последним элементом списка. Элемент a i предшествует элементу a i+1 для i = 1,2,…,n-1 и a i следует за a i-1 для i = 2,3,…,n. Каждый элемент списка a i имеет позицию i, i=1,2,…,n.

Операторы АТД "Список" Обозначим : L – список объектов типа TElement, x – объект этого типа, p – позиция элемента в списке. Функция End(L) будет возвращать позицию, следующую за позицией n в n- элементном списке L. 1. INSERT(x, р, L). Если список L состоит из элементов a 1, a 2,..., а n, то после выполнения этого оператора он будет иметь вид а 1, а 2,..., а р -1, х, а р,..., a n. Если р принимает значение End(L), то будем иметь a 1, a 2,..., a n, х. Если в списке L нет позиции р, то результат выполнения этого оператора не определен.

Операторы АТД "Список" 2. LOCATE(x, L). 3. RETRIEVE(p, L). 4. DELETE(p, L). Если список L состоит из элементов a 1, a 2,..., а n, то после выполнения этого оператора он будет иметь вид а 1, а 2,..., a p-1,a p+1,..., а n. 5. NEXT(p, L) и PREVIOUS(p, L). 6. MAKENULL(L). 7. FIRST(L). 8. PRINTLIST(L).

Реализация с помощью массива Первый элемент Второй элемент Последний элемент список свободный 1 2 last maxlength

Приведем необходимые объявления const MaxLength = 100; type TList = record Elements: array[1..MaxLength] of TElement; Last : Integer ; end ; TPosition = Integer; function End(var L: TList): TPosition; begin Result := L.Last + 1; end; procedure Error(strMessage: string); begin Writeln(strMessage); Readln; Halt() end;

Реализация оператора списка INSERT procedure INSERT (x: TElement; p: TPosition; var L: TList) ; var q: TPosition; begin if L.last >= maxlength then Error(' Список полон ') else if (p > L.last + 1) or (p < 1) then error(' Такой позиции не существует ') else begin for q := L. last downto p do {перемещение элементов из позиций p, p+1, на одну позицию к концу списка} L.elements[q + 1] := L.elements[q]; L.last := L.last + 1; L.elements[p] := x end end; { INSERT }

Реализация оператора списка DELETE procedure DELETE (p: TPosition; var L: TList); var q: TPosition; begin if (p > L.last) or (p < 1) then error('Такой позиции не существует') else begin L.last := L.last - 1; for q := p to L.last do {перемещение элементов из позиций р+1, p+2,... на одну позицию к началу списка} L.elements[q] := L.elements[q + 1] end end; { DELETE }

Реализация оператора списка LOCATE procedure LOCATE (x: TElementType; L: TList): TPosition; var q: TPosition; begin for q := 1 to L.last do if L.elements[q] = x then begin Result := q; Exit; end; Result := L.last + 1 {элемент х не найден} end; // LOCATE

Задания 1. Реализуйте АТД Список для любого типа данных и его операторы ( INSERT, LOCATE, RETRIEVE, DELETE, NEXT, PREVIOUS, MAKENULL, FIRST, PRINTLIST ), используя массив. 2. Создайте программу позволяющую объединять несколько списков в один.