IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Двусвязный список в виде класса
Rei-li
сообщение 20.09.2011 20:27
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Женский

Репутация: -  0  +


Здравствуйте.
Проверьте, пожалуйста, правильно ли выполнено задание:
Реализуйте заданную структуру данных (двусвязный список целых чисел) в виде класса (набора классов).
Не используйте стандартные классы .NET для представления коллекций ( разрешается использование только массивов).


program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
PList = ^TList;
TList = record
inf : integer;
prior: PList;
next : PList
end;

TListDual = object
private
pfirst, plast : PList;
public
constructor Init;
destructor RemoveList;
procedure Print_forward;
procedure Print_back;
procedure Insert( NewInf : integer);
end;

constructor TListDual.Init; {инициализация списка }
begin
pfirst := nil; plast := nil;
end;


destructor TListDual.RemoveList; {уничтожение списка}
var
q: Plist;
begin
if pfirst = nil then writeln('List not init')
else
begin
while pfirst <> nil do
begin
q := pfirst;
pfirst := pfirst^.next;
dispose(q);
end;
end;
plast := nil;
end;

procedure TListDual.Print_forward; { процедура печати элементов с первого(начало) }
var start : PList;
begin
if pfirst = nil then writeln('List not init')
else
begin
start := pfirst;
while (start <> nil) do
begin
write(start^.inf, ' ');
start := start^.next;
end;
WriteLn;
end;
end;

procedure TListDual.Print_back; { процедура печати элементов с последнего(начало) }
var last : PList;
begin
if plast = nil then writeln('List not init')
else
begin
last := plast;
while (last <> nil) do
begin
write(last^.inf, ' ');
last := last^.prior;
end;
WriteLn;
end;
end;


procedure TListDual.Insert( NewInf : integer); {процедура вставки элементов в конец списка(информационная часть) }
var
p : PList;
begin
new(p);
p^.inf := NewInf;
p^.next := nil;
if (pfirst=nil) and (plast=nil) {если пустой список} then
begin
pfirst := p;
pfirst^.prior := nil;
end
else {список не пуст, добавляем элемент в конец и корректируем указатели}
begin
plast^.next := p;
p^.prior := plast;
end;
plast := p;
end;

begin
{ TODO -oUser -cConsole Main : Insert code here }
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 22.09.2011 9:53
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Анонимные методы реализуются с помощью интерфейса, имеющего один-единственный метод Invoke, совпадающий по сигнатуре с анонимным.

http://sergworks.wordpress.com/2010/01/27/...-the-internals/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Rei-li   Двусвязный список в виде класса   20.09.2011 20:27
IUnknown   Здесь: все делается проще: procedure TListDual.Ins...   20.09.2011 22:29
Rei-li   Спасибо. В том то и дело, что оно работает, но мен...   20.09.2011 22:42
IUnknown   Значит, сделай так: program Project2; {$APPTY...   20.09.2011 23:04
Гость   Огромное спасибо !!! Буду разбираться....   20.09.2011 23:34
IUnknown   Ничего особенного делать не надо, разницы, что име...   21.09.2011 2:31
Rei-li   Я так понимаю, что в проблеме с деструктором дело ...   21.09.2011 3:25
TarasBer   > Какие есть мысли по преодолению проблемы? По...   21.09.2011 9:14
IUnknown   На самом деле, возможных решений проблемы - 2 (кро...   21.09.2011 10:43
Lapp   Володь, давно подпись сменил? Я только заметил ))...   21.09.2011 11:21
Rei-li   Скажите, пожалуйста, надо писать именно T = TSomeC...   21.09.2011 16:38
IUnknown   Это дженерики. Тебе что, надо реализацию именно на...   21.09.2011 17:42
Rei-li   Спасибо, мне именно на дженериках и надо было. Но ...   21.09.2011 23:44
IUnknown   Вот тут можно почитать об анонимных методах: http:...   22.09.2011 0:03
Rei-li   Спасибо большое, классно написано. Многое стало бо...   22.09.2011 1:51
TarasBer   Почитал ссылку > На практике очень часто приме...   22.09.2011 9:31
IUnknown   Анонимные методы реализуются с помощью интерфейса,...   22.09.2011 9:53


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.05.2024 3:25
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"