В списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного - Turbo Pascal

Формулировка задачи:

Здравствуйте, Вы не могли бы помочь с задачей контрольной работы? "Составить программу. В списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного." Буду премного благодарен. ------------------------------------------------ С Уважением, superuser!

Код к задаче: «В списке целых чисел удалить из каждой группы подряд идущих одинаковых элементов все, кроме одного - Turbo Pascal»

textual
const
  maxRandom = 2;
  lenList   = 100;
  
type
  tList = ^rList;
  rList = record
    N : Integer;
    P, X : tList;
  end;
 
function CreateList : tList;
var
  L : tList;
  i : Byte;
begin
  Randomize;
  New(L);
  L^.N := Random(maxRandom + 1);
  L^.X := nil;
  for i := 1 to lenList - 1 do
    begin
      New(L^.P);
      L^.P^.X := L;
      L := L^.P;
      L^.N := Random(maxRandom + 1);
    end;
  L^.P := nil;
  CreateList := L;
end;
 
procedure OutList(L : tList);
begin
  Write('Список:');
  while L <> nil do
    begin
      Write(#32, L^.N);
      L := L^.X;
    end;
  WriteLn;
end;
 
procedure TransformList(var L : tList);
var
  cur, tmp : tList;
begin
  cur := L;
  while cur <> nil do
    begin
      if (cur^.X <> nil) and (cur^.N = cur^.X^.N) then
        begin
          tmp := cur^.X;
          cur^.X := tmp^.X;
          if tmp^.X <> nil then
            cur^.X^.P := cur;
          Dispose(tmp);
        end
      else
        cur := cur^.X;
    end;
end;
 
var
  L : tList;  
begin
  L := CreateList;
  OutList(L);
  TransformList(L);
  OutList(L);
end.

14   голосов, оценка 3.929 из 5


СОХРАНИТЬ ССЫЛКУ