Senin, 07 Mei 2012

Contoh Program Single Linked List Circular


USES Crt;
TYPE Duma = ^data;
data = RECORD
nilai : char;
lagi : Duma;
end;
var jalan : duma;
kar,tom : char;
masuk : boolean;
{---------------------------------------------------------------------}
PROCEDURE Baca(jalan:duma);
var bantu:duma;
begin
bantu:=jalan;
while bantu<>nil do
begin
write(bantu^.nilai,' ');
bantu:=bantu^.lagi;
end;
writeln;
end;
{---------------------------------------------------------------------}
PROCEDURE Masdep(var jalan:duma;kar:char);
var baru:duma;
begin
new(baru);baru^.nilai:=kar;baru^.lagi:=nil;
if jalan=nil then jalan:=baru
else
begin
baru^.lagi:=jalan;
jalan:=baru;
end;
end;
{---------------------------------------------------------------------}
PROCEDURE bacamundur(jalan:duma);
var bantu,baru,lewat : duma;
begin
new(baru);baru^.lagi:=nil;
bantu:=jalan;
if bantu=nil then writeln('Link kosong !')
else
begin
repeat
new(lewat);{lewat^.lagi:=nil;}
lewat^.nilai:=bantu^.nilai;
lewat^.lagi:=baru;
baru:=lewat;
bantu:=bantu^.lagi;
until bantu=nil;
bantu:=baru;
while bantu^.lagi<>nil do
begin
writeln(bantu^.nilai);
bantu:=bantu^.lagi;
end;
end;
end;
{---------------------------------------------------------------------}
PROCEDURE hapus(jalan:duma;kar:char);
var bantu,baru,lewat : duma;
begin
new(baru);baru^.lagi:=nil;
bantu:=jalan;
if bantu=nil then writeln('Link kosong !')
else
begin
repeat
if bantu^.nilai<>kar then
begin
new(lewat);{lewat^.lagi:=nil;}
lewat^.nilai:=bantu^.nilai;
lewat^.lagi:=baru;
baru:=lewat;
end;
bantu:=bantu^.lagi;
until bantu=nil;
bantu:=baru;
while bantu^.lagi<>nil do
begin
writeln(bantu^.nilai);
bantu:=bantu^.lagi;
end;
end;
end;
{---------------------------------------------------------------------}
begin
clrscr;
new(jalan);
jalan^.lagi:=nil;
tom :='Y';
while upcase (tom)='Y' do
begin
repeat
masuk:=true;
write('Masukkan satu huruf, untuk berhenti [T]: ');
kar:=upcase(readkey);writeln(kar);
if kar='T' then masuk:=false;
if masuk=true then masdep(jalan,kar);
until kar='T';
writeln;
write('huruf yang akan dihapus adalah : ');kar:=upcase(readkey);
hapus(jalan,kar);
writeln;
write ('Lagi [Y/T] ? ');readln(tom);
readln;
end;
end.

Tidak ada komentar:

Posting Komentar