Программа


PROGRAM Insert;
TYPE List=^Element;        { Тип - список }
     Element=record
               Ch:char;
               Next:List
             end;
VAR L:List;               { Список }
    E1,E:char;            { Вставляемый и предшествующий элементы }
PROCEDURE InputList(var L:List);  { Процедура ввода списка }
  Begin
    if not EOLn then begin               { Если нет конца строки, то }
                       New(L);             { создание новой переменной }
                       Read(L^.Ch);        { чтение символа }
                       InputList(L^.Next)  { ввод оставшейся части строки }
                     end
                else begin
                       L:=nil;             { иначе закрытие списка }
                       ReadLn              { пропуск маркера конца строки }
                     end
  End;
PROCEDURE OutputList(L:List);  { Процедура вывода списка }
  Begin
    if L<>nil then begin               { Если не конец списка, то }
                     Write(L^.Ch);        { вывод символа }
                     OutputList(L^.Next)  { вывод оставшейся части строки }
                   end
              else WriteLn('"')           { иначе вывод конца строки }
  End;
PROCEDURE DisposerList(var L:List); { Процедура удаления списка }
  Begin
    if L<>nil then begin   { Если переменная существует, то }
                     DisposerList(L^.NEXT);  { удаление хвоста списка }
                     Dispose(L)              { удаление переменной }
                   end;
    L:=nil { Переопределение ссылки }
  End;
PROCEDURE InsertElement(L:List;E,E1:char);  { Процедура вставки элемента }
  Var Buf:List;  { Переменная для создания копии вставляемого элемента }
  Begin
    if L<>nil then  { Если список не пуст, то }
      if L^.Ch=E then begin { если первый элемент соответствует элементу E, то }
                        New(Buf);  { создание новой переменной }
                        Buf^.Ch:=E1; { запись вставляемого элемента в новую переменную }
                        { вставка сформированого элемента в список: }
                        Buf^.Next:=L^.Next;
                        L^.Next:=Buf;
                        InsertElement(L^.Next^.Next,E,E1)
                              { вставка элемента в оставшуюся часть списка }
                      end
                 else InsertElement(L^.Next,E,E1)
                          { иначе вставка элемента в оставшуюся часть списка }
  End;
BEGIN
  WriteLn;                    { Пропуск строки }
  Write('Введите строку  ');  { Вывод приглашения }
  InputList(L);               { Ввод списка }
  { Ввод вставляемого элемента: }
  Write('Ведите вставляемый элемент ');
  ReadLn(E1);
  { Ввод элемента предшествующего вставляемому: }
  Write('Ведите элемент предшествующий вставляемому ');
  ReadLn(E);
  { Вывод списка: }
  Write('Введенная строка:          "');
  OutputList(L);
  InsertElement(L,E,E1);  { Вставка элемента в строку }
  { Вывод списка: }
  Write('Модифицированная строка:   "');
  OutputList(L);
  DisposerList(L)   { Уничтожение списка }
END.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию