Jumat, 17 April 2015




STACK

Pada post kali ini saya akan membahas mengenai STACK.
Apa itu “stack” ?
Stack merupakan suatu susunan koleksi data dimana data  dapat ditambahkan dan dihapus melalui bagian akhir data, yang disebut dengan top of stack. Stack bersifat LIFO (Last In First Out) yang bererarti benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack.
Berikut adalah operasi STACK :
  1. Inisialisasi : digunakan untuk mengosongkan stack. Yaitu mengisi nilai field top dengan 0. Contoh :

     procedure inisial (var s: stack);
    begin
       s.top:= 0;
    end;

  2. Push : digunakan untuk menambah item pada stack pada tumpukan paling atas. Langkah operasi PUSH adalah :
    a. periksa apakah stack penuh (isFull)  jika "Tidak" maka periksa apkah stack kosong (isEmpty) pada bagian ini akan ada 2 kemungkinan, jika "Ya" maka set top = 1 lalu masukkan data. Kemungkinan ke-2 jika "Tidak" maka tambahkan field top dengan 1 lalu masukkan data.
    b. Periksa apakah stack penuh (isFull) "Iya" maka stack telah penuh. 


    Contoh operasi push:

     procedure push (nim: string; nama: string; nilai: real; var s: stack);
    begin
    if isFull (s) = true then
    begin
            writeln ('stack penuh");
    end
    else
    begin
        if isEmpty (s) = true then
         begin
             s.top:=1;
             s.data[1].nim := nim;
             s.data[1].nama := nama;
             s.data[1].nilai := nilai;
        end
        else
        begin
           s.top:= s.top+1;
           s.data[s.top].nim := nim;
           s.data[s.top].nama := nama;
           s.data[s.top]. nilai := nilai;
           end;
        end;
    end; 
  3. Pop : digunakan untuk mengambil item pada stack pada tumpukan paling atas. Merubah nilai dari field top, jika field top tidak sama dengan 0 maka top= top-1. jika field top sama dengan 0 maka data pada stack telah habis.Contoh :

    procedure pop (var s: stack);
    begin
           if s.top <> 0 then
            begin
                 s.top:= s.top-1;
                end
               else
                    write ('data telah habis');
                    writeln;
    end; 
     
  4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong. Untuk memeriksa apakah stack dalam keadaan kosong dapat dilakukan dengan memeriksa field top. Jika field top bernilai 0, maka stack dalam keadaan empty (kosong) dan fungsi isEmpty akan mengembalikan nilai true (1). Jka top tidak bernilai 0 berarti stack ada isinya, maka nilai yang dikembalikan adalah false (0). Contoh : 

    function isEmpty (var s: stack) : boolean;
    var
         hasil: boolean;
    begin
          hasil:= false;
          if s.top = 0 then
          begin
              hasil:= true;
          end;

          isEmpty:= hasil;
    end; 

  5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh. Untuk memeriksa keadaan stack apakah sudah penuh atau tidak dapat dilakukan dengan cara mengembalikan nilai true (1) jika stack telah penuh (top= maks_elm) dan mengembalkan nilai false (0) jika stack masih bisa ditambah (top<maks_elm). Contoh:

    function isFull (var s: stack) : boolean;
    var
         hasil : boolean;
    begin
         hasil:= false;
         if s.top = maks-elm then
         begin
              hasil:= true;
         end;
         isFull:= hasil;
    end; 




    Untuk lebih jelasnya bisa lihat coding dibawah ini. 





sumber materi : I Putu Adi Pratama slide

Tidak ada komentar:

Posting Komentar