Anda di halaman 1dari 7

program antriann;

uses crt;

type antrian=^node;

node=record

isi:string[10];

next:antrian;

end;

var depan,belakang:antrian;

pointer:string;

x:string;

cr:string;

pil:char;

procedure baru(x:string; var tunjuk:antrian);

begin

new(tunjuk);

tunjuk^.isi:=x;

tunjuk^.next:=nil;

end;

function isempty(depan, belakang:antrian):boolean;

begin

isempty:=(depan=nil) and(belakang=nil)=true

end;
procedure tambahantri(var belakang:antrian);

var x:string;

tunjuk:antrian;

begin

write('Masakuna nama orang yang mau masuk antrian');

readln(x);

baru(x,tunjuk);

belakang^.next:=tunjuk;

belakang:=tunjuk;

end;

procedure hapusdepan(var depan, belakang:antrian);

var bantu:antrian;

begin

if isempty(depan, belakang) then

writeln('Antrian kosong')

else if depan=belakang then

begin

depan:=nil; belakang:=nil

end

else

begin

bantu:=depan^.next;

depan:=bantu;
end;

end;

procedure selesaiantri(var depan, belakang:antrian; var x:string);

begin

if depan= nil then

x:='antrian kosong'

else

begin

x:=depan ^.isi;

hapusdepan(depan,belakang);

end;

end;

procedure buatantrian(var depan,belakang:antrian);

var c:char; tunjuk:antrian; i:integer;

begin

i:=0;

depan:=nil; belakang:=nil;

repeat

i:=i+1;

write('masukan nama ke ',i,'='); readln(x);

baru(x,tunjuk);

if isempty(depan,belakang) then

begin
depan:=tunjuk;

belakang:=tunjuk;

end

else

begin

belakang^.next:=tunjuk;

belakang:=tunjuk;

end;

repeat

write('Tambah data yang antri [Y/T]= ');

readln(c);

until c in['T','t','y','Y'];

until c in['T','t'];

end;

procedure cetak(depan:antrian;var output:string);

var bantu:antrian; y:string;

begin

bantu:=depan;

output:='Loket Pendaftaran';

if isempty(depan,belakang) then output:='Antrian Kosong'

else

begin

while bantu<>nil do

begin
y:=bantu^.isi;

output:=y+'->>'+output;

bantu:=bantu^.next;

end;

output:='pintu masuk antrian->>'+output;

end;

end;

begin

clrscr;

buatantrian(depan,belakang);

repeat

repeat

writeln;

writeln('-----------------------');

writeln('[1] Buat Antrian Baru ');

writeln('[2] Tambah Antrian Pendaftar ');

writeln('[3] Ambil orang yang selesai daftar');

writeln('[4] Loket pendaftaran Ditutup');

writeln('--------------------------------------');

write('Pilihan anda : '); pil:=readkey;writeln(pil);

writeln;

until (pil>='1') and (pil<='4');

case pil of
'1' :begin

buatantrian(depan,belakang);

writeln;

writeln;

writeln;

end;

'2' :begin

tambahantri(belakang);

writeln;

writeln('setelah ditambah antrian menjadi : ');

cetak(depan,pointer);

writeln(pointer);

writeln;

writeln;

writeln;

end;

'3' : begin

selesaiantri(depan,belakang,x);

writeln(' ',x,' Telah selesai mendaftar, maka ia keluar dari antrian');

writeln;

writeln('Antrian menjadi :');

cetak(depan,pointer);

writeln(pointer);
writeln;

writeln;

writeln;

end;

'4' : begin

writeln('Loket telah ditutup ');

writeln('Antrian dilanjutkan hari berikutnya');

exit;

end;

end;

until (pil='8');

end.

end.

Anda mungkin juga menyukai