Pages

Thursday, April 28, 2011

Linked List


sedikit berbagi salah satu contoh source code linked list untuk bahasa pemrograman pascal..
selamat mencoba..



uses Crt;
type pointer = ^Tlist;
TList = record
data : integer;
next : pointer;
end;
var a,nilai:integer;
procedure depan(var p:pointer; x:integer);
var q : pointer;
begin
new(q);
q^.data:=x;
q^.next:=p;
p:=q;
end;

procedure belakang(var p:pointer; x:integer);
var q,t : pointer;
begin
new(q);
q^.data:=x;
q^.next:=nil;
if (p=nil) then
p:=q
else begin
t:=p;
while (t^.next<>nil) do t:=t^.next;
t^.next:=q;
end; end;
procedure tengah(var p:pointer; x:integer);
var q,t : pointer;
begin
new(q);
q^.data:=x;
q^.next:=nil;
if (p=nil) or (p^.data>x) then begin
q^.next:=p;
p:=q;
end else begin
t:=p;
while (t^.next<>nil) and (t^.next^.data<x)
do t:=t^.next;
q^.next:=t^.next;
t^.next:=q;
end;
end;
procedure cetak(p:pointer);
begin
while (p<>nil) do begin
write(p^.data,' ');
p:=p^.next;
end;
end;


function hapus(var p:pointer; data:integer):pointer;
var baru,bantu:pointer;
begin
if data = p^.data then
begin
new(baru);
baru:=p;
p:=p^.next;
dispose(baru);
end
else
begin
new(bantu);
bantu:=p;
repeat
if (bantu^.next^.next = nil) and (data = bantu^.next^.data)then
begin
dispose(bantu^.next);
bantu^.next :=nil;
end
else if (data = bantu^.next^.data) then
begin
new(baru);
baru:= bantu^.next^.next;
dispose(bantu^.next);
bantu^.next:=baru;
end
else
bantu:=bantu^.next;
until bantu^.next = nil
end;
hapus:=p;
end;
var P:pointer;
{----------------------------blog program utama----------------------}
begin
clrscr; P:=nil;
for a:= 1 to 5 do
begin
write(‘masukkan data : ’);readln(nilai);
depan (p,nilai); ganti sesuai kebutuhan}
end;
cetak(p);
readln(nilai);
cetak(hapus(p,nilai));
readln;
end.
{-------------------- zaint coba linked list --------------------}

No comments:

Post a Comment