Разработать библиотеку классов для обработки списков на основе решения л.р.1 предмета "Алгоритмы и структуры данных". Проверить работоспособность классов библиотеки.
Состав библиотеки:
TListAction=procedure(Node:TANode) of object;
Поля:
fHead:TANode;
Методы: (студент должен корректно квалифицировать методы с помощью ключевых слов abstract, virtual, class, override и др.)
// конструкторы
Constructor Create;
Constructor Create(filename:string);
Constructor Create(Source:TAlist);
function CreateElement(pdata:pointer):TANode;
// деструкторы
Destructor Destroy;
// модификаторы
function AddFirstElement(Node:TANode):TANode;
function AddLastElement(Node:TANode):TANode;
function InsertElementAfter(prevNode:TANode; Node:TANode):TANode;
function InsertElementBefore(nextNode:TANode; Node:TANode):TANode;
function DeleteFirstElement():TANode;
function DeleteLastElement():TANode;
function DeleteElement(Node:TANode):TANode;
function DeleteElementAfter(prevNode:TANode):TANode;
function DeleteElementBefore(nextNode:TANode):TANode;
// селекторы
function GetHead():TANode;
function GetNextElement(prevNode:TANode):TANode;
function GetPrevElement(nextNode:TANode):TANode;
// итераторы
Procedure Store(filename:string);
procedure ListAction(action:TListAction);
procedure ListActionReverse(action:TListAction);
procedure Show;
procedure ShowReverse;
function First:TANode; // сброс итератора, получение первого элемента
function Next:TANode; // инкремент итератора, получение следующего элемента
procedure DisposeList(DisposeAction:TListAction=nil);