ВУЗ:
Составители:
Рубрика:
57
задания на одном из .NET-языков требуется использовать объекты типа Node (кото-
рые при разработке задания не применяются).
Задание, которое мы реализуем, дублирует задание Dynamic30, посвященное
преобразованию односвязного списка в двусвязный (подгруппа «Динамические
структуры данных: двусвязный список»). Оформим два варианта этого задания в виде
процедур MakerDemo8 и MakerDemo8Net:
var WrongNode: TNode;
procedure MakerDemo8Data;
var
i, n: integer;
p, p1, p2: PNode;
begin
if Random(4) = 0 then
n := 1
else
n := 2 + Random(8);
new(p1);
p1^.Data := Random(90) + 10;
p1^.Prev := nil;
p2 := p1;
for i := 2 to n do
begin
new(p);
p^.Data := Random(90) + 10;
p^.Prev := p2;
p2^.Next := p;
p2 := p;
end;
p2^.Next := nil;
SetPointer(1, p1);
SetPointer(2, p2);
ResultP('Последний элемент: ', 2, 0, 2);
ResultList(1, 0, 3);
ShowPointer(2);
DataP('', 1, 0, 2);
p := p1;
for i := 1 to n do
begin
p^.prev := @WrongNode;
p := p^.Next;
end;
DataList(1, 0, 3);
ShowPointer(1);
end;
procedure MakerDemo8;
begin
CreateTask('Динамические структуры данных: двусвязный список');
TaskText('Дан указатель~{P}_1 на начало непустой цепочки ' +
'элементов-записей типа TNode,', 0, 1);
TaskText('связанных между собой с помощью поля Next. Используя ' +
'поле Prev записи TNode,', 0, 2);
TaskText('преобразовать исходную (\Iодносвязную\i) цепочку ' +
'в \Iдвусвязную\i, в которой каждый', 0, 3);
TaskText('элемент связан не только с последующим элементом ' +
Страницы
- « первая
- ‹ предыдущая
- …
- 55
- 56
- 57
- 58
- 59
- …
- следующая ›
- последняя »