program tehtava116(input, output); type osoitin = ^tietue; tietue = record tieto : integer; linkki: osoitin end; var esimlista, p: osoitin; luku: integer; procedure Jarjesta(lista: osoitin); {Tämä versio ei muuta linkkejä vaan vaihtaa vain tietosisällöt! Tätä voi käyttää, JOS LISTAN ALKIOIHIN EI OLE MUITA OSOITTIMIA!} var p, q: osoitin; apu: integer; begin if lista <> nil then begin p := lista; while p^.linkki <> nil do {käydään läpi muut, paitsi viimeinen} begin q := p^.linkki; while q <> nil do {käydään läpi loppuosa p:stä eteenpäin} begin if p^.tieto > q^.tieto then begin apu := p^.tieto; p^.tieto := q^.tieto; q^.tieto := apu; end; q := q^.linkki; end; p := p^.linkki; end; end; end; begin {testipääohjelma} writeln('Anna kokonaislukuja, nolla lopettaa.'); esimlista := nil; read(luku); while luku <> 0 do begin new(p); p^.tieto := luku; p^.linkki := esimlista; esimlista := p; read(luku); end; Jarjesta(esimlista); p := esimlista; while p <> nil do begin write(p^.tieto:1, ' '); p := p^.linkki; end; writeln; end.