program list; uses CRT; type pt=^elem; elem=record info:byte; next:pt; end; pt2=^elem2; elem2=record info2:byte; next2:pt2; end; pt3=^elem3; elem3=record info3:byte; next3:pt3; end; var i:integer; function getelem(elname:string):byte; var ret:byte; begin ret:=random(15); getelem:=ret; end; function getelem2(elname2:string):byte; var ret2:byte; begin ret2:=random(15); getelem2:=ret2; end; procedure addtobegin (var list:pt; info:byte); var newelem:pt; begin new(newelem); newelem^.info:=info; newelem^.next:=list; list:=newelem; end; procedure addtobegin2(var list2:pt2; info2:byte); var newelem2:pt2; begin new(newelem2); newelem2^.info2:=info2; newelem2^.next2:=list2; list2:=newelem2; end; procedure printlist (list:pt); begin clrscr; if (list=NIL) then writeln('Список пуст!') else while (list<>NIL) do begin write(list^.info); list:=list^.next; if (list<>NIL) then write(',') else write('.'); end; readkey; end; procedure printlist2(list2:pt2); begin clrscr; if (list2=NIL) then writeln('Список пуст!') else while (list2<>NIL) do begin write(list2^.info2); list2:=list2^.next2; if (list2<>NIL) then write(',') else write('.'); end; readkey; end; procedure showmenu; begin clrscr; Writeln('1) Добавить элемент в начало списка'); Writeln('2) Распечатать список 1'); Writeln('3) Распечатать список 2'); Writeln('0) Выход из программы'); Writeln; Write(' Ваш выбор : '); end; var root: pt; root2:pt2; selection : byte; begin root:=NIL; root2:=nil; repeat showmenu; readln(selection); writeln; case selection of 1: for i:=1 to 10 do begin addtobegin(root,getelem('значение элемента')); addtobegin2(root2,getelem2('значение элемента')); end; 2: printlist(root); 3: printlist2(root2); 0: clrscr; end; until selection=0; end.