Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции програм_new_последняя версия1.doc
Скачиваний:
14
Добавлен:
14.09.2019
Размер:
697.34 Кб
Скачать

Объект-список

Создать объект-список, предусмотреть в нем методы добавления нового элемента в начало и в конец списка. Методы удаления элементов из начала и из конца списка, методы вывода списка на экран и удаления этого списка.

Пусть список состоит из целых чисел.

top – это указатель на первый элемент списка.

bottomуказатель на последний элемент списка.

size количество элементов в списке.

Метод print позволяет вывести на экран элементы списка;

Метод addtop(x)добавляет целое число х в начало списка;

Метод addbottom(x)добавляет целое число х в конец списка;

Метод deltopудаляет первый элемент списка;

Метод delbottomудаляет последний элемент списка;

Конструктор create – дает полям начальное значение;

Деструктор destroyуничтожает список.

Модуль по работе со списками

unit spisok;

interface

type

PList=^List; {указатель на элемент списка}

List=record

data:integer;

next:PList

end;

TObjList=class

Top,Bottom:PList;

size:integer;

constructor create;

destructor destroy;override;

procedure AddTop(x:integer);

procedure AddBottom(x:integer);

procedure DelTop;

procedure DelBottom;

procedure Print;

end;

implementation

constructor TObjList.create;

begin

Top:=nil;Bottom:=nil;size:=0

end;

destructor TObjList.destroy;

var tmp:PList;

begin

while top<>nil do

begin tmp:=top;

top:=top^.next;

dispose(tmp)

end;

end;

procedure TObjList.print;

var tmp:PList;

begin

if top=nil then writeln(‘spisok pust’)

else begin tmp:=top;

while tmp<>nil do

begin writeln(tmp^.data);

tmp:=tmp^.next;

end;

end;

end;

procedure TObjList.AddTop(x:integer);

var tmp:PList;

begin new(tmp);

tmp^.data:=x;

tmp^.next:=top;

if size=0 then bottom:=tmp;

top:=tmp;

size:=size+1

end;

procedure TObjList.AddBottom(x:integer);

var tmp:PList;

begin new(tmp);tmp^.data:=x;

tmp^.next:=nil;

if size=0 then top:=tmp

else bottom^.next:=tmp;

bottom:=tmp;

size:=size+1

end;

procedure TObjList.delTop;

var tmp:Plist;

begin

if size>0 then

begin

tmp:=top;

top:=top^.next;

size:=size-1;

dispose(tmp);

if size=0 then bottom:=nil

end

else writeln(‘spisok pust’)

end;

procedure TObjList.DelBottom;

var tmp:PList;

begin

if size>0 then

begin

tmp:=top;

while(tmp^.next<>bottom)and(tmp^.next<>nil) do

tmp:=tmp^.next;

if tmp^.next<>nil then

begin

tmp^.next:=nil;

dispose(bottom);

bottom:=tmp

end

else dispose(bottom);

size:=size-1;

if size=0 then

begin

bottom:=nil;top:=nil

end;

end

else writeln(‘spisok pust’)

end; //конец DelBottom

end. //конец unit spisok