Добрый вечер!
Помогите пожалуйста с задачей,правильно ли понимаю или нет?
Задача: Описать подпрограмму удаления одного или нескольких элементов
двусвязного линейного списка-Удалить из списка все элементы со значением, меньшим заданного
значения
делаю так:
Код:
Procedure Del_V(var first,last:link);
Var p,q:link;
n,a:integer;
Begin
if first=nil then
writeln('Список пуст')
else
begin
write('Введите эл-т, который надо сравнить: ');
readln(a);
writeln;
n:=0;
p:=first;
while (p<>nil)or(first<>nil) do
begin
if (p^.inf<a)and(p=first)then//удаление первого
begin
if p^.next<>nil then//удаление первого если несколько
begin
first:=p^.next;
first^.prev:=nil;
q:=p;
p:=p^.next;
dispose(q);
n:=n+1;
end
else//удаление первого если один
begin
first:=nil;
dispose(p);
n:=n+1;
end;
end
else
if (p^.inf<a)and(p=last)then//удаление последнего
begin
last:=p^.prev;
last^.next:=nil;
dispose(p);
n:=n+1;
end
else
if p^.inf<a then
begin
p^.prev^.next:=p^.next;
p^.next^.prev:=p^.prev;
q:=p;
p:=p^.next;
dispose(q);
n:=n+1;
end
else
p:=p^.next;
end;
if n<>0 then
writeln('Кол-во удаленых эл-ов: ',n)
else
writeln('В списке нет эл-ов меньше заданого значения')
end;
end;
Среда разработки: PascalABC
-- 13.12.2011, 23:17 --спасибо,разобрался сам.