Юлечка. Посмотри-ка
Количество элементов можешь изменить по своему усмотрению (const N=14)!!!
Исходный код
Uses Crt;
Type
Spis=^L;
L=record
El: Word;
Next: Spis
end;
Var
A:array[1..15] of Spis;
k,j,i,E,F:integer;
q:char;
const
N=14;
{===== =====}
{
данная функция ищет вхождение элемента Е
в список, и при его наличии в нем вставляет
впереди него элемент F
}
function Search(simb:integer):Spis;
var
i,j,k:integer;
Begin
k:=1;
For i:=1 To N Do
If A[i]^.El=E Then {проверка принадлежности элемента Е массиву данных }
Begin
For j:=N+1 DownTo i Do
A[j]^.El:=A[j-k]^.El; {сдвиг элементов массива начиная с элемента Е}
A[i]^.El:=F; {вправо на одну ячейку и запись}
Inc(k); {на место элемента Е элемента F}
Break;
End;
End;
repeat
ClrScr;
TextColor(red);
Randomize;
WriteLn('Превоначальный список');
For i:=1 To N Do New(A[i]); {Резервируем фрагменты кучи}
A[N+1]^.El:=0; {последнему элементу для удобства присваиваем 0}
For i:=1 To N Do
Begin
A[i]^.El:=Random(15);
WriteLn('*',A[i]^.El)
End;
A[N+1]^.Next:=Nil; {Стираем последний указатель }
{===== =====}
TextColor(blue);
Write(' Введите элемент списка Е= ');
ReadLn(E);
Write('Введите вставляемый в список элемент F= ');
ReadLn(F);
{===== =====}
Search(E);
TextColor(yellow);
WriteLn('Модифицированный список имеет вид: ');
For i:=1 To (N+1) Do
WriteLn('*',A[i]^.El);
WriteLn('Повторить ЕЩЕ?(Y/N)');
q:=ReadKey;
until not (q in ['Y','y']);
End.