Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 4

TUGAS MODUL DOUBLE LINKED-LIST MELINGKAR

1. Listing Double Linked-list melingkar


Program praktikum_6;
Uses crt;
Type pointer=^node;
Node=record
Isi:integer;
Kiri,kanan:pointer;
End;

Var baru,p:pointer;
n:integer;

procedur sisi (var p:pointer;baru:pointer);


var bantu:pointer;
begin
if p^kanan=nill then
begin
p^.kanan :=baru;
baru^.kanan :p;
baru^.kanan :p;
p^.kiri :=baru;
end
else
if baru^.isi <p>.kanan^.isi then
begin
baru^.kanan :=p^.kanan;
baru^kanan^.kiri :=baru;
baru^.kiri :=p;
baru^.kiri^.kanan :=baru;
end
else
begin
bantu :=p;
while (bantu^.kanan <> p) and (baru^.isi > bantu^.kanan^.isi)do
bantu :=kanan^.kanan;
if bantu^.kanan <> p then
begin
baru^.kanan :=bantu^.kanan;
baru^.kiri :=bantu;
baru^.kiri :=kanan :=kiri;
baru^.kiri^.kiri :=baru;
end
else
begin
baru^.kanan :=bantu^.kanan;
baru^.kiri :=bantu;
baru^.kiri^.kanan :=baru;
baru^.kanan^.kiri :=baru;
end
else
begin
baru^.kiri :=bantu;
baru^.kanani :=baru^.kiri^.kanan;
baru^.kiri^.kanan :=baru;
baru^.kanan^.kiri :=baru
end;
end;
end;

procedur hapuskan (var p : pointer; n : integer);


var hapus : pointer;
ada : boolean;
begin
hapus =p
ada = falsr;
while (hapus^.kanan <> p) and (not (ada)) do
begin
hapus :=hapus^.kanan;
if n = hapus^. Isi then
ada = true
end;
if not (ada) then
writeln (‘data tidak ada’)
else
if hapus^.kanan =p then
begin
hapus^.kiri^.kanan :=hapus^.kanan;
hapus^.kanan^kiri :=hapus^.kiri;
dipose (hapus);
end;
end;

begin
clrscr;
new (p);
with p^do
begin
kiri :=nil;
kanan :=nil;
end;
repeat
write (‘isi :’); readln (n);
new (baru);
with baru^do
begin
isi :=n;
kanan :=nil;
kiri :=nil;
end;
sisip (p, baru);
writeln (‘enter terus/esc cukup’);
until readkey =#27;
repeat
with (data yang akan di hapus :’):readln(n);
hapuskan (p,n);
writeln (‘enter terus / esc cukup’);
until readkey = 27;
end

You might also like