2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 динамические структуры,двусвязные списки
Сообщение13.12.2011, 23:00 
Добрый вечер!
Помогите пожалуйста с задачей,правильно ли понимаю или нет?
Задача: Описать подпрограмму удаления одного или нескольких элементов
двусвязного линейного списка-Удалить из списка все элементы со значением, меньшим заданного
значения
делаю так:
Код:
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 --

спасибо,разобрался сам.

 
 
 [ 1 сообщение ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group