procedure MakeList(var Head: ListEl); var NewEl: ListEl; cont: char; begin repeat NewEl:=new(ListEl); writeln('name?'); readln(NewEl^.name); writeln('capital?'); readln(NewEl^.cap); writeln('people?'); readln(NewEl^.peop); writeln('square?'); readln(NewEl^.Sq); NewEl^.Next:=Head; Head:=NewEl; writeln('No more countries? y/n'); readln(cont); until cont='y'; end;
procedure View(const Head: ListEl); var Curr: ListEl; begin Curr:=Head; while Curr<>nil do with Curr^ do begin write(name:10,cap:10,peop:10,sq:10:2); writeln; Curr:=Next; end; end;
procedure Sort(var Head: ListEl); var Curr1,Curr2,Chan: ListEl; begin Curr1:=Head; while Curr1^.Next<>nil do begin Curr2:=Head; if (Curr2^.peop/Curr2^.sq)>(Curr2^.Next^.peop/Curr2^.Next^.sq) then begin Head:=Head^.Next; Curr2^.Next:=Head^.Next; Head^.Next:=Curr2; end; while Curr2^.Next^.Next<>nil do begin Chan:=Curr2; if (Curr2^.Next^.peop/Curr2^.Next^.sq)>(Curr2^.Next^.Next^.peop/Curr2^.Next^.Next^.sq) then begin Chan:=Chan^.Next; Curr2^.Next:=Chan^.Next; Chan^.Next:=Chan^.Next^.Next; Curr2^.Next^.Next:=Chan; end; Curr2:=Curr2^.Next; end; Curr1:=Curr1^.Next; end; end;
procedure Select(const Head: ListEl); var sel: char; Curr: ListEl; begin writeln('letter?'); readln(sel); Curr:=Head; while Curr<>nil do begin if Curr^.cap[1]=sel then writeln(Curr^.name); Curr:=Curr^.Next; end; end;