You are on page 1of 3

program ANTRIAN_BERPRIORITAS; {$APPTYPE CONSOLE} uses SysUtils; {***************************************** * program 6.10 (PROG6-10.

PAS) * * contoh sederhana antrian berprioritas * *****************************************} program ANTRIAN_PRIORITAS; uses crt; type Antri = ^Simpul; Simpul= record info : char; prioritas : integer; Berikut : Antri; end; var Antrian : Antri; Elemen : Char; prior : integer; {****************************************** * prosedur untuk membentuk simpul kepala * ******************************************} procedure AWALAN (Var Q : Antri); begin new(Q); Q^.info := chr(0); Q^.prioritas := 0; Q^.Berikut := Q end; {* prosedur AWALAN*} {***************************************** * prosedur untuk memasukan elemen baru * * pada tempat yang sesuai * *****************************************} procedure TAMBAHAN_BARU (Q : Antri; x : char; p :integer); var Baru,Bantu : Antri; begin {* membentuk simpul baru *} new(Baru); with Baru^ do begin Info := x; prioritas := p; Berikut := nil end; {*Cek keadaan antrian*} if Q^.Berikut = Q then {*antrian masih kosong*} begin Baru^.Berikut := Q; Q^.Berikut := Baru

end else {* antrian sudah ada isinya *} begin Bantu := Q; {* mencari posisi yang tepat untuk * * menyisipkan elemen baru *} while (Bantu^.Berikut^.Prioritas <= p) and (Bantu^.Berikut <> Q) do Bantu := Bantu^.Berikut; if Bantu^.Berikut = Q then {* Elemen baru yang akan disispkan * * mempunyai prioritas paling rendah *} begin Baru^.Berikut := Q; Bantu^.Berikut := Baru end else {* Elemen yang akan di sisipkan * * mempunyai prioritasnya lebih tinggi *} begin Baru^.Berikut := Bantu^.Berikut; Bantu^.Berikut := Baru end end end; {* prosedur TAMBAH_BARU *} {************************************** * prosedur untuk membaca isi antrian * **************************************} procedure BACA (Q : Antri); Var Bantu : Antri; begin Bantu := Q^.Berikut; repeat write('Informasi: ',Bantu^.Info); writeln('prioritas: ',Bantu^.prioritas); Bantu:= Bantu^.Berikut until Bantu = Q end; {* prosedur BACA *} {****************** * Program utama * ******************} begin { TODO -oUser -cConsole Main : Insert code here } clrscr; AWALAN(Antrian); write('MASUKAN (Isikan prioritas = 0 '); writeln('untuk berhenti): '); repeat write('Iformasi, prioritas: '); readln(Elemen,prior); if prior <> 0 then TAMBAH_BARU(Antrian, Elemen, prior);

until prior = 0; writeln;writeln('URUTAN PRIORITAS: '); BACA(Antrian) end. {* Program utama *}

You might also like