Программа
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.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию