Показать сообщение отдельно
  #6  
Старый 26.02.2010, 12:30
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Код:
program Spisok;
{$APPTYPE CONSOLE}
uses
  SysUtils;

type
  Link = ^Zveno;
  Zveno = record
    number: integer;
    inf: Integer;
    sled: Link;
  end;

function NewElem(number, inf: integer): Link;
begin
  New(Result);
  Result^.number := number;
  Result^.inf := inf;
  Result^.sled := nil;
end;

function RopFirst(var Elem: Link): Link;
begin
  Result := Elem;
  if Elem <> nil then
    Elem := Elem^.sled;
end;

var
  Beg, Elem, T, T2: Link;
  X: integer;
  i, n: integer;
begin
  Randomize;
  write('Vvedi dlinnu spiska : ');
  readln(n);

  Beg := NewElem(1, random(10));
  Elem := Beg;

  for I := 2 to n do
  begin
    Elem^.sled := NewElem(i, random(10));
    Elem := Elem^.sled;
  end;

  Elem := Beg; {Назначаем начальный узел}
  while Elem <> nil do
  begin
    write('[', Elem^.number, '] ', Elem^.inf, ' --> ');
    Elem := Elem^.sled;
  end;
  writeln;
  // удаление < 5

  // удаление первых
  while (Beg <> nil) and (Beg^.inf < 5) do
    Dispose(RopFirst(Beg));

  // Beg или nil или содержит >= 5
  if Beg <> nil then
  begin
    Elem := Beg; {Назначаем начальный узел}
    while Elem^.sled <> nil do
    begin
      if Elem^.sled^.inf < 5 then
        Dispose(RopFirst(Elem^.sled))
      else
        Elem := Elem^.sled;
    end;
  end;

  readln;
  
  Elem := Beg; {Назначаем начальный узел}
  while Elem <> nil do
  begin
    write('[', Elem^.number, '] ', Elem^.inf, ' --> ');
    Elem := Elem^.sled;
  end;
  writeln;
  
  readln;
end.
Ответить с цитированием