Работа с объектами - списками

Тема направлена на освоение методов работы со списочными структурами данных разных типов. Разработчик задачи должен создать данные соответствующего типа и описать все перечисленные методы работы с этими данными в каждом из вариантов задачи.

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

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

Допустим, у нас есть некоторая информация в виде строки. Описания объектов трех названных типов могут быть такими:

Type

stt=string[40];

Tpel=^Tel;

Tel=record

Fam: stt;

pnext:Tpel; {Указатель на следующий элемент списка}

ppred:Tpel;

end;

Tlist= object{Объект- список. Пример формирования методов объекта}

pStart:Tpel;

Constructor Init;

procedure InsertFirst(pNew:Tpel); {Вставить первый элемент в список,

в его начало}

procedure InsertLast(pNew:Tpel); {Вставить элемент в конец списка}

procedure DeleteEl(Deifam:stt); {Удалить один элемент}

procedure Save_to-file(fnamt:stt); {Сохранить список в файле}

procedure Load_from_file (fnamt:stt); {Прочитать данные для списка из файла}

procedure Show; {Показать содержимое списка на экране}

procedure DeleteList; {Удалить список из памяти}

destructor Done; {Освободить в динамической памяти все занятые объектом

ячейки }

end;

Несомненно количество и разнообразие методов зависит от решаемой конкретной задачи и использование объектов наследников позволит как ввести в объекты-наследники новые методы для работы со списками, так и изменить описанные.

Тип объекта - стек можно представить как наследника объекта Tlist:

Tstack=object(Tlist);

Constructor init; {Конструктор может быть иным, по сравнению

с конструктором списочного элемента}

procedure Push(f:stt); {Вставить на вершину стека очередной элемент.

Должен переместиться указатель стека.}

function Pop:Tpel; {Удалить элемент из стека именно с его вершины.]

Destructor done; {Уничтожение зарезервированной динамической памяти}

end;

Tqueue= object(Tlist); {Тип- очередь. Обязательны указатели начала и конца


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



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