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

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



Advertisements
Похожие презентации
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Advertisements

АБСТРАКТНЫЙ ТИП ДАННЫХ СПИСОК Лекция 1. Примеры списков списки магазинных покупок списки дел расписания поездов бланки заказов.
Реализация списков:динамические структуры ListList clasclas структура одного элемента type LIST = celltype; celltype = record element: eltype; next: LIST.
PROGRAM example1; const m=100; var a : ARRAY [1.. m] of INTEGER; i,k,n,q : INTEGER; BEGIN readln (n); randomize; WRITELN('Полученный массив:' ); FOR i.
САОД, кафедра ОСУ1 Реализация списков:динамические структуры ListList classclass структура одного элемента type LIST = celltype; celltype = record.
Алгоритм удаления из массива максимального элемента найти номер максимального элемента k; сдвинуть все элементы, начиная с k-го, на один элемент влево;
Сортировка массивов Что изменилось? ЧТО ДАЛЬШЕ ? Поменяем местами голубой и лиловый прямоугольники.
Задачи с использованием одномерных массивов 1. Опишите алгоритм подсчёта среднего значения положительных элементов в целочисленном массиве из 30 элементов.
Задачи с использованием одномерных массивов 1. Опишите алгоритм подсчёта среднего значения положительных элементов в целочисленном массиве из 30 элементов.
САОД, кафедра ОСУ ИК ТПУ1 Реализация списков:динамические структуры ListList classclass структура одного элемента type LIST = celltype; celltype.
K-периодичный массив. В данной задаче речь пойдет только о массивах, все элементы которых равны 1 и/или 2. Массив a называется k-периодичным, если его.
ОДНОМЕРНЫЕ МАССИВЫ. В математике, экономике, информатике часто используются упорядоченные наборы данных, например, последовательности чисел, таблицы,
Задача: определить является ли простым заданное число.
const n=10; var a:array[1..n] of integer; i,j,c,b,k:integer; begin randomize; for i:=1 to n do begin a[i]:=random(11)-5;write(a[i]:5) end;writeln;
Функции. Функция- это подпрограмма, которая вычисляет и возвращает некоторое значение. Функции описываются в разделе описаний следующим образом: Function.
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
Множественный тип данных Множество в языке Паскаль – это ограниченный набор различных элементов одного (базового) типа, которые рассматриваются как единое.
ОДНОМЕРНЫЕ МАССИВЫ. СПОСОБЫ ЗАДАНИЯ ОДНОМЕРНЫХ МАССИВОВ. Понятие массива.
Что такое структурный подход в программировании? Как он реализуется в ЯП Паскаль? Что такое процедура? Кто дает название процедуре? Где записывается процедура?
Program maxsimum; const n=10; var a:array [1..n] of integer; max,i:integer;begin ВВОД ЭЛЕМЕНТОВ МАССИВА; max:=a[1]; for i:=2 to n do if a[i]> max then.
Транксрипт:

Основные абстрактные типы данных: списки В математике список представляет собой последовательность элементов определенного типа. Список представляется в виде последовательности элементов: a 1,a 2, a 3,…,a n все а i имеют один тип. Количество элементов п будем называть длиной списка. Если п 1, то a 1 называется первым элементом, а a n последним элементом списка. В случае n=0 имеем пустой список, который не содержит элементов.

Основные абстрактные типы данных: списки П остулируем существование позиции, следующей за последним элементом списка. Функция END( L) будет возвращать позицию, следующую за позицией n в n -элементном списке L. П озиция END (L), рассматриваемая как расстояние от начала списка, может изменяться при увеличении или уменьш е нии списка

Основные абстрактные типы данных: списки INSERT(x, р, L) Этот оператор вставляет объект х в позицию р в списке L, перемещая элементы от позиции р и далее в следующую, более высокую позицию. Если список L состоит из элементов a 1,a 2, a 3,…,a n то после выполнения этого оператора он будет иметь вид a 1,a 2, a 3,a p-1,x,a p …,a n Если р принимает значение END(L), то будем иметь a 1,a 2, a 3,…,a n,, х. Если в списке L нет позиции р, то результат выполнения этого оператора не определен.

Основные абстрактные типы данных: списки LOCATE(x, L) Функция возвращает позицию объекта х в списке L. Если в списке объект х встречается несколько раз, то возвращается позиция первого от начала списка объекта х. Если объекта х нет в списке L, то возвращается END(L).

Основные абстрактные типы данных: списки RETRIEVE(p, L) Эта функция возвращает элемент, который стоит в позиции р в списке L. Результат не определен, если р = END(L) или в списке L нет позиции р. Отметим, что элементы должны быть того типа, который в принципе может возвращать функция. Однако на практике мы всегда можем изменить эту функцию так, что она будет возвращать указатель на объект типа elementtype.

Основные абстрактные типы данных: списки DELETE(p, L) Этот оператор удаляет элемент в позиции р списка L. если список L состоит из элементов a 1,a 2, a 3,…,a n то после выполнения этого оператора он будет иметь вид a 1,a 2, a 3,…a p-1, a p+1 …,a n Результат не определен, если в списке L нет позиции р или р = END(L).

Основные абстрактные типы данных: списки NEXT(p, L) и PREVIOUS(p, L). Функции возвращают соответственно следующую и предыдущую позиции от позиции р в списке L. Если р последняя позиция в списке L, то NEXT(p, L) = END(L). Функция NEXT не определена, когда р = END(L). Функция PREVIOUS не определена, если р = 1. Обе функции не определены, если в списке L нет позиции р.

Основные абстрактные типы данных: списки MAKENULL(L) Эта функция делает список L пустым и возвращает позицию END(L).

Основные абстрактные типы данных: списки FIRST(L) Эта функция возвращает первую позицию в списке L. Если список пустой, то возвращается позиция END(L).

Основные абстрактные типы данных: списки PRINTLIST(L) Печатает элементы списка L в порядке из расположения.

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

Реализация списков Const maxl = 1000; Type List = record elements: array[1..maxl] of eltype; last: integer end; position = integer;

Реализация списков Function EndL (var L:List) : position; begin EndL := L.last+1 end;

procedure INSERTL (x: eltype; р: position; var L: LIST ); { вставляет элемент х в позицию р в списке L } var q : position; begin if L.last >= maxlength then Writeln (Список полон') else if (р > L.last + 1) or (р < 1) then Writeln ('Такой позиции не существует') else begin

for q:= L.last downto p do {перемещение элементов на одну позицию к концу списка } L.elements[q+l]:= L.elements[q]; L.last:= L.last + 1; L.elements[p]:= x end end; { INSERT }

procedure DELETEL ( p: position; var L: LIST ) ; {удаляет элемент в позиции р списка L } var q: position; begin if (p > L.last) or (p < 1) then Writeln ('Такой позиции не существует') else

begin L.last:= L.last – 1; for q:= p to L.last do { перемещение элементов из позиций р+1, р+2,... на одну позицию к началу списка } L.elements[q] := L.elements [q+1] end end; { DELETE }

function LOCATE ( x:eltype;L: LIST ): position; { возвращает позицию элемента x в списке L } var q: position; begin for q:= 1 to L.last do if L.elements[q] = x then begin Locate := q; Exit (LOCATE) end else Locate := L.last+1 {х не найден } end; { LOCATE }