Вопрос № 77985: Здраствуйте!
Ниже приведена програма которая создает динамический однонаправленый список, из n елементов, и присваивает каждому значению его номер по порядку.
Не могу пределать эту програму для двонаправленого списка, где предидущий элемент ...
Вопрос № 77.985
Здраствуйте!
Ниже приведена програма которая создает динамический однонаправленый список, из n елементов, и присваивает каждому значению его номер по порядку.
Не могу пределать эту програму для двонаправленого списка, где предидущий элемент будет prev, как я уже описал. Помогите пожалуйста.
Заранее благодарен.
Приложение:
Отправлен: 12.03.2007, 17:26
Вопрос задал: Torrens (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Verena
Здравствуйте, Torrens!
Это может выглядеть, например, так. Ссылка prev последнего элемента будет указывать на nil, что можно использовать, если нужен вывод в обратном направлении.
uses crt;
type zv=^pointer;
pointer=record
elem:integer;
next:zv;
prev:zv
end;
var vlan, vslov: zv;
n, i: integer; {переменные не были объявлены}
Begin
readln(n);
new(vslov);
vslov^.elem:=1;
vslov^.next:=nil;
vslov^.prev:=nil; {присваиваем nil обратной ссылке}
vlan:=vslov;
i:=1;
repeat
i:=i+1;
new(vlan^.next);
vlan^.next^.prev:=vlan; {присваиваем prev ссылку на предыдущий элемент}
vlan:=vlan^.next;
vlan^.elem:=i;
vlan^.next:=nil;
until i=n;
vlan:=vslov;
end.
--------- Эта история - не для истории, понимаешь?
Ответ отправила: Verena (статус: 6-ой класс)
Ответ отправлен: 12.03.2007, 17:55 Оценка за ответ: 5
Отвечает: Яна
Здравствуйте, Torrens!
Согласна с ответом Verena, только ссылка prev первого (а не последнего элемента) равна nil.
Ответ отправила: Яна (статус: Студент)
Ответ отправлен: 12.03.2007, 18:55 Оценка за ответ: 5