1. PROGRAM
KONSEP
Nama : Renny Dwi Yuni
NIM : 121080200076
Kelas : 2 B -Sore
Program Queue dengan Single Linked List
Program Queue_Single;
uses wincrt;
const max:byte=7;
type penunjuk=^data;
data=record
info:string;
berikut:penunjuk;
end;
var awal,akhir:penunjuk;
pil:char;
jml:byte;
cari,nama:string;
procedure inisialisasi;
begin
awal:=nil;
akhir:=nil;
jml:=0;
end;
procedure tambah_akhir;
var baru:penunjuk;
nama:string;
begin
if jml=max then
begin
write('Antrian Penuh');
readln;
end
else
begin
write('Nama:');readln(nama);
new(baru);
baru^.berikut:=nil;
baru^.info:=nama;
if awal=nil then
begin
awal:=baru;
akhir:=baru;
inc(jml);
end else
begin
akhir^.berikut:=baru;
akhir:=baru;
Deklarasi Sebuah Queue Dinamis dengan Single
Linked List
Penunjuk = Point
Data = RecPoint
Berikut = Next
Awal = Head
Akhir = Tail
Procedure Create
Awal := nil;
Akhir :=nil;
Procedure Insert
New(Baru);
Tail^.Next:=now;
Now^.Isi:=nil;
If head = nil then
Head := now;
Tail := now;
Type
Point = ^RecPoint;
RecPoint = Record
Isi : TipeData;
Next : Point;
End;
Var
Head, Tail, Now : Point;
Procedure Create;
Begin
Head := Nil;
Tail := Nil;
End;
Procedure INSERT
(elemen:TipeData);
Var Now : Point;
Begin
New(Now);
If Head = Nil Then
Head := Now;
Else
Tail^.Next := now;
Tail := Now;
Tail^.Next := Nil;
Now^.Isi := Elemen;
End;
2. inc(jml);
end;
end;
end;
procedure hapus_awal;
var bantu:penunjuk;
begin
if awal=nil then
begin
write('Antrian Kosong');
readln;
end
else
begin
bantu:=awal;
awal:=awal^.berikut;
dispose(bantu);
dec(jml);
end;
end;
procedure hapus_tengah;
var bantu1,bantu2:penunjuk;
ketemu:boolean;
begin
if awal=nil then
begin
write('Antrian Kosong');
readln;
end
else
begin
write('Nama Pengantri Yang batal:');readln(cari);
if awal^.info=cari then
hapus_awal
else
begin
ketemu:=false;
bantu1:=awal;
while (bantu1<>nil) and not ketemu do
begin
if bantu1^.berikut^.info=cari then
ketemu:=true
else
bantu1:=bantu1^.berikut;
end;
if ketemu then
begin
bantu2:=bantu1^.berikut;
bantu1^.berikut:=bantu1^.berikut^.berikut;
dispose(bantu2);
end
Procedure Delete Head
If Head = nil then
Begin
Now:=Head;
Head:=Had^.Next;
Dispose (Now);
Prosedure Hapus Now
If Head = nil then
X:=head;
X:=X^.next;
X^.next:=head^.next;
Head:=Head^.next
Dispose(now);
Procedure DeleteHead;
Begin
If head <> nil then
Begin
Now := Head;
Head := Head^.Next;
Dispose(Now);
Now := Head;
End;
End;
Procedure DeleteNow;
Var x : point;
Begin
If Now <> Head then
Begin
X := head;
While x^.next <> now do
X := x^.next;
X^.next := now^.next;
End
Else head := head^.next;
Dispose(now);
Now := head;
End;
3. else
begin
write('Nama Pengantri Tidak Ada');
readln;
end; end;
end; end;
procedure tampil;
var bantu:penunjuk;
i:integer;
begin
if awal=nil then
write('Antrian Kosong')
else
begin
bantu:=awal;
i:=1;
while bantu<>nil do
begin
writeln(i,'.[',bantu^.info,']');
bantu:=bantu^.berikut;
inc(i);
end;
end;
readln;
end;
procedure menu;
begin
writeln('MENU PILIHAN ANDA');
writeln('=================');
writeln('1.Tambah Antrian');
writeln('2.Batal Antrian');
writeln('3.Memanggil Pengantri');
writeln('4.Tampil Antrian');
writeln('5.Exit');
writeln;
write('Pilihan Anda :');readln(pil);
end;
begin
inisialisasi;
repeat
menu;
case pil of
'1':tambah_akhir;
'2':hapus_tengah;
'3':hapus_awal;
'4':tampil;
end;
until pil='5';
end.
Procedure menampilkan Queue
Prosedure Membua tampilan Menu
Bagian Program Utama
Begin
Isi
End.