Реализация операций для неупорядоченной таблицы с использованием динамической памяти

PElem = ^Elem;

Elem=record кл:Key; инф:Inf, след:Pelem end;

Заголовок Действие
Создать (var p:PElem) p:=NIL
Таблица пуста? (p:PElem): Boolean Таблица пуста?:= p=NIL
Добавить в начало (var p:PElem,x:Key,i:Inf) (доп. перем p1:PElem) NEW(p1); p1^.кл:=x; p1^.инф:=i; p1^.след:=p; p:=p1;
Добавить в конец (var p:PElem,x:Key,i:Inf) (доп. перем p1,p2:PElem) (можно обойтись одной доп. перем.) p1:=p; p2:=p; while p1<>NIL do begin p2:=p1; p1:=p1^.след end; NEW(p1); p1^.кл:=x; p1^.инф:=i; p1^.след:=p; p2^.след:=p1;
Найти по ключу(p:PElem,x:Key): PElem (доп. перем. p1:PElem) p1:=p; while (p1<>NIL)and(p1^.кл<>x) do p1:=p1^.след; Найти по ключу:=p1
Удалить запись таблицы, заданную ключем, если она есть(var p:PElem,x:Key): (доп. перем. p1,p2:PElem) p1:=p; p2:=p; while (p1<>NIL)and(p1^.кл<>x) do begin p2:=p1; p1:=p1^.след end; if p1<>NIL then if p1:=p2 then begin p:=p1^.след; DISPOSE(p1) end else begin p2^.след:=p1^.след; DISPOSE(p1) end

Задача

Реализовать операции для упорядоченной по ключу и упорядоченной по частоте обращения таблиц.

Лекция 3

Структуры ряда

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

Строки

Строка - структура ряда, в которой открыт доступ к любому элементу (любой записи) через последовательный просмотр как от начала цепочки к концу, так и от коца цепочки к началу. Пусть Е - множество элементарных данных, Е(К) - множество всех последовательностей, состоящих из К элементов множества Е, т.е. элементами множества Е(К) являются строки длиной К. В таблице приведены основные операции над строками (использованы обозначения аÎЕ(К1), вÎЕ(К2), сÎЕ(К3), авÎЕ(К1+К2), авсÎЕ(К1+К2+К3) и т.д., dÎЕ(К1-К2+К3))

Имя операции Функциональные спецификации Аргументы Результат О п и с а н и е
Конкатенация Е(К1)´Е(К2)® Е(К1+К2) а, в ав Строка, полученная склейкой строк а и в
Вычеркивание подстроки Е(К1+К2+К3)® Е(К1+К3) авс ас Строка, полученная из авс отбрасыванием в
Разделение Е(К1+К2)® Е(К1)´Е(К2) ав а, в Разделение на две строки
Подстановка Е(К1+К2)´Е(К3)® Е(К1+К3+К2) ав, с асв Подстановка
Контекстный поиск? Е(К1)´Е(К2)® Boolean а, в истина или ложь Истина, если в строке а есть подстрока в
Контекстная замена Е(К1)´Е(К2)´Е(К3)® Е(К1-К2+К3) а, в, с либо d, либо а Если контекст в найден в а, то он заменяется на контекст с, иначе без изменения

Представление с помощью массивов

N - максимальная длина строки, s1,s2,...:array[1..N] of Inf.

Задача: реализовать операции над строками, представляя строки с помощью массивов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: