Показать сообщение отдельно
Старый 15.04.2013, 00:31   #3 (permalink)
Léon
С# - learn or die
 
Аватар для Léon
 
Регистрация: 17.12.2011
Сообщений: 2,438
Записей в дневнике: 8
Сказал(а) спасибо: 21
Поблагодарили 49 раз(а) в 11 сообщениях
Репутация: 19701
По умолчанию

Создание списка путем добавления элементов в конец списка. Общий случай:
Код:
Procedure Init(Var u : Ukazatel); 
Var
  x : Ukazatel;
  Digit : integer; {Значение информационной части элемента списка}
Begin
  Writeln('Введите список ');
  u := Nil; {Список пуст}
  Writeln ('Введите элементы списка. Конец ввода 0');
  Read (Digit);
  if Digit <> 0 
    then {Формируем и вставляем первый элемент списка}
      Begin
        New(x);
        x^.Next := Nil;
        x^.Data := Digit;
        u := x; 
        Read (Digit);
        while Digit<>0 do
          Begin
            New(x^.Next); {Формируем и вставляем элемент в конец списка}
            x := x^.Next;
            x^.Next := Nil;
            x^.Data := Digit;
            Read(Digit);
          End;
      End;
  Writeln;
End;
или
Код:
Procedure Init(Var u : Ukazatel); 
Var
  x, y : Ukazatel;
  Digit : integer;
Begin
  Writeln('Введите список ');
  u := Nil;
  Writeln ('Введите элементы списка. Конец ввода 0');
  Read (Digit);
  while Digit<>0 do
    Begin
      New(y);
      y^.Next := Nil;
      y^.Data := Digit;
      if u=Nil
        then
          u := y 
        else
          x^.Next := y;
      x := y;
      Read(Digit);
    End;
  Writeln;
End;
Процедура удаления элементов из списка в общем случае:
Код:
Procedure Del(Digit : integer; Var u : Ukazatel );
Var
  x, dx : UKAZATEL ;
Begin
  x := u;
  while x<>Nil do
    if x^.Data=Digit
      then
        Begin
          if x=u
            then
              Begin
                u := u^.Next;
                Dispose(x);
                x := u;
              End
            else
              Begin
                dx^.Next := x^.Next;
                Dispose(x);
                x := dx^.Next;
              End;
        End 
      else
        Begin
          dx := x;
          x := x^.Next;
        End;
End;
P.s. Извини, переделать под твою прогу нет времени.
Léon вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070