Friday, July 9, 2010

linked list

program list;
uses crt;
type TipeSenarai=^RecordSenarai;
     RecordSenarai=record
        data:integer;
        next:TipeSenarai;
     end;

var
     senaraiku1,senaraiku2:TipeSenarai;

Procedure inisialisasi(var senarai:TipeSenarai);
begin
        senarai:=nil;
end;

Procedure tambahbarusimpul(baru:integer; var senarai:TipeSenarai);
var
   pbaru,ekor:TipeSenarai;
begin
   ekor:=senarai;
   if ekor <> NIL then
   begin
     new(pbaru);
     pbaru^.data:=baru;
     pbaru^.next:=NIL;

     while ekor^.next<>nil do
     ekor:=ekor^.next;
     ekor^.next:=pbaru;

   end
   else
   begin
     new(senarai);
     senarai^.data:=baru;
     senarai^.next:=NIL;
   end;
end;

Procedure sisipsimpul(baru:integer; var senarai:TipeSenarai);
var
   pbaru,p:TipeSenarai;
begin

   if senarai=NIL then
   begin
     senarai^.data:=baru;
     senarai^.next:=NIL;
   end
   else
   begin
     new(pbaru);
     pbaru^.data:=baru;
     pbaru^.next:=NIL;

     if baru
     begin
       pbaru^.next:=senarai;
       senarai:=pbaru;
     end
     else
     begin
       p:=senarai;
       while(p^.next<>nil) and (baru <>
         p:=p^.next;
       pbaru^.next:=p^.next;
       p^.next:=pbaru;
      end;
   end;
end;

procedure cetaksenarai(senarai:TipeSenarai);
var
   ekor:TipeSenarai;

begin
   ekor:=senarai;
   if ekor <> NIL then

   while ekor<>nil do
   begin
     writeln(ekor^.data);
     ekor:=ekor^.next;
   end
   else
   writeln('kosong');
   writeln; 
end;



BEGIN
inisialisasi(senaraiku1);
tambahbarusimpul(3,senaraiku1);
tambahbarusimpul(1,senaraiku1);
cetaksenarai(senaraiku1);
sisipsimpul(3,senaraiku1);
sisipsimpul(1,senaraiku1);
cetaksenarai(senaraiku1);
readln;
end.

No comments: