Вот программа:
Program Task1641I ( input, output );
uses crt;
Type
PtrRec = ^Rec;
Rec = Record
Element : integer;
pNext : PtrRec;
End;
Var
pBegin, pEnd, pAux, pCKey: PtrRec;
R: integer;
Procedure Create_Ring (var pBegin: PtrRec);
Var pAux : PtrRec;
el : integer;
Begin
New (pBegin);
pAux := pBegin;
pAux^.pNext := Nil;
Write ('Write numbers... ');
ReadLn (el);
While el <> 0 do
Begin
New (pAux^.pNext);
pAux := pAux^.pNext;
pAux^.Element := el;
pAux^.pNext := Nil;
ReadLn (el);
End;
pAux^.pNext := pBegin^.pNext;
Writeln;
End;
Procedure Add_Elem2 (pCKey: PtrRec; R: integer);
Var pAux : PtrRec;
Begin
New (pAux);
pAux^.pNext := pCKey^.pNext;
pCKey^.pNext := pAux;
pAux^.Element := pCKey^.Element;
pCKey^.Element := R;
End;
Procedure Print_Ring (pBegin: PtrRec);
Var pAux: PtrRec;
Begin
pAux := pBegin^.pNext;
If pBegin^.pNext<>Nil Then Begin
While pAux^.pNext <> pBegin^.pNext do
Begin
Write (pAux^.Element,' ');
pAux := pAux^.pNext
End;
Writeln (pAux^.Element);
End
Else Writeln ('list is empty')
End;
begin
clrscr;
create_ring ( pBegin );
write ( 'write R...' );
read ( R );
add_elem2 ( pCKey, R );
write ( 'New list...' );
print_ring ( pBegin );
readkey;
end.