Senin, 17 Januari 2011

STRUKTUR DATA MODUL 2 STACK (TUMPUKAN)

PRAKTIKUM STRUKTUR DATA

Implementasi Stack dengan Pointer

Kegiatan 1 : Implementasi Stack untuk membalik kalimat
  1. Tuliskan kode program di bawah ini ke dalam editor pascal!
  2. Compile dan jalankan program, dan analisa hasilnya!
  3. Kesimpulan apa yang Anda dapat dari percobaan program ini?

 Program BALIK_KALIMAT;
 uses crt;
 const Elemen = 255;   {* batas maksimum karakter *}
 type typearray = string[Elemen];
      typeStack = record
                   Isi  : typearray;
                   Atas : 0..Elemen
                 end;

 var  T       : typestack;  {* nama tumpukan *}
      I       : integer;   {* pencacah *}
      Kalimat : typearray;      {* kalimat yang dibalik *}

 {**********************************
  * Prosedur inisialisasi tumpukan *
  ********************************** }
  procedure buatstack (var T : TYPESTACK);
  begin
    T.Atas := 0
  end;         {* prosedur AWALAN *}
 {*********************************************
  * Prosedur untuk memasukkan elemen ke dalam *
  *********************************************}
 procedure PUSH (var T : TYPESTACK; X : char);
 begin
   T.Atas := T.Atas + 1;
   T.Isi[T.Atas] := X
 end;          {* prosedur PUSH *}
 {***********************************************
  * Fungsi untuk mengambil elemen dari tumpukan *
  ***********************************************}
  function POP (var T : Typestack) : char;
  begin
    POP := T.Isi[T.Atas];
    T.Atas := T.Atas - 1
  end;         {* fungsi POP *}

 {*****************
  * Program utama *
  *****************}
  begin
    clrscr;
    Buatstack(T);
    writeln('TUMPUKAN UNTUK MEMBALIK KALIMAT');
    writeln('-------------------------------');
    writeln;
     {* Kalimat yang akan dibalik *}
    write('Isikan sembarang kalimat: ');
    readln(Kalimat);

    clrscr;
    writeln('KALIMAT ASLI:'); writeln(Kalimat);
    writeln;writeln('SETELAH DIBALIK:');

    {* Mempush kalimat ke dalam tumpukan *}
    for I := 1 to length(Kalimat) do
      PUSH (T, Kalimat[I]);
     {* Mempop isi tumpukan sehingga diperoleh    *
     * kalimat yang dibaca terbalik pembacaannya *}
    for I := 1 to length(Kalimat) do
      write(POP(T));
    readln;
 end.          {* program utama *}

Kegiatan 2 : Implementasi Stack dengan Pointer
  1. Tuliskan kode program di bawah ini ke dalam editor pascal!
  2. Compile dan jalankan program, analisa proses dan hasilnya!
  3. Kesimpulan apa yang Anda dapat dari program ini?

program stack_pointer1;
uses crt;
type typeInfo=integer;
     typePtr=^typenode;
     typenode=record
                    info:typeinfo;
                    next:typePtr;
     end;
     typestack=typePtr;
var stack:typestack;
procedure buatstack(var stack:typestack);
begin
     new(stack);
     stack:=nil;
end;

Function StackKosong(stack:typestack):boolean;
begin
     stackkosong:=(stack=nil);
end;
Procedure Push(var Stack:typestack; IB:typeInfo);
var NB:typePtr;
begin
     new(NB);
     NB^.info:=IB;
     NB^.next:=stack;
     stack:=NB;
end;
Procedure Pop(var Stack:typestack; var infopop:typeInfo);
var Temp:typePtr;
begin
     if not (stackkosong(stack)) then
     begin
     new(temp);
     temp:=stack;
     infopop:=stack^.info;
     stack:=stack^.next;
     dispose(temp);
     end;
end;
begin
     buatstack(stack);
     push(stack,3);
     push(stack,6);
     push(stack,8);
     pop(stack,x);
     push(stack,9);
     while stack^.info <> 0 do
     begin
          writeln(stack^.info);
          stack:=stack^.next;
     end;
     readln;
end.

Tidak ada komentar: