procedure AddRight(L: PList; E: T);
// --------------------Добавить элемент к списку (слева)------------------------
procedure AddLeft(L: PList; E: T);
// --------------------Опустошить список----------------------------------------
procedure EmptyList(L: PList);
// --------------------Объединить два списка в один-----------------------------
procedure Merge(L,T: PList);
//---------------------Освобождает выделенную под список память-----------------
procedure DelList(var L: PList);
// --------------------Выводит значения элементов списка в строку-------------
function ListToStr(L: PList): String;
// --------------------Создать узел списка-----------------------------------
function CreateE(key: T): PNode;
implementation
//------------------------------------------------------------------------------
function ListToStr(L: PList): String;
//Распечатывает поле key всех элементов списка,
//начиная с головы списка
var p: PNode;
begin
if L <> nil
then
begin
Result:= 'Size = ' + IntToStr(Size(L)) + '| Elements: ';
p:= L^.first;
while p <> nil do
begin
Result:= Result+ IntToStr(p^.key) + '; ';
p:= p^.next
end;
if Size(L) = 0 then Result:= Result + 'no elements';
end
else
Result:= 'List not exist';
end;
//------------------------------------------------------------------------------
function PredLast(L: PList; var Pred: PNode): PNode;
//Возвращает укзатель на предпоследний и последний элементы списка
begin
Pred:= nil;
if (L <> nil) then
with L^ do
case size of
0: Result:= nil;
1: begin Result:= first; Pred:= first end;
else
Result:= first;
while Result^.next <> nil do
begin
pred:= Result;
Result:= Result^.next
end
end
else
Result:= nil
end;
//------------------------------------------------------------------------------
function CreateE(key: T): PNode;
//Создаёт элемент списка
begin
try
new(Result);
Result^.key:= key;
Result^.next:= nil
except
on EOutOfMemory do begin
Result:= nil;
raise;
end;
end;
end;
//------------------------------------------------------------------------------
function CreateL: PList;
//Создаёт пустой список
begin
try
new(Result);
Result^.first:= nil;
Result^.last:= nil;
Result^.size:= 0
except
on EOutOfMemory do begin
Result:= nil;
raise;
end;
end;
end;
//------------------------------------------------------------------------------
function Size(L: PList): integer;
//Возвращет число элементов списка L
begin
if L <> nil
then
Result:= L^.size
else//Список не существует
Result:= -1
end;
//------------------------------------------------------------------------------
function IsEmpty(L: PList): Boolean;
//Определяет пуст ли список L
begin
Result:= False;
if L <> nil
then
if L^.first = nil
then
Result:= True;
end;
//------------------------------------------------------------------------------
procedure AddRight(L: PList; E: T);
//Добавляет элемент к списку справа
begin
if (L <> nil)
then
with L^ do
case size of
0: begin
first:= CreateE(E);
last:= first;
inc(size)
end;
else
Last^.next:= CreateE(E);
Last:= Last^.next;
inc(size)
end
end;
//------------------------------------------------------------------------------
procedure AddLeft(L: PList; E: T);
//Добавляет элемент к списку слева
var p: PNode;
begin
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.