Tugas IV Stack(Tumpukan)

Apa itu stack ?

Stack adalah sebuah abstract data type (ADT) yang berisi koleksi data item yang hanya dapat diakses pada akhir bagian stack tersebut, biasa disebut top. Hal ini berarti bahwa didalam sebuah stack, kita dapat memasukkan (insert) dan menghapus (delete) item hanya dari posisi top tersebut. Item terakhir yang kita masukkan kedalam sebuah stack adalah item yang paling pertama harus kita keluarkan. Itulah mengapa stack disebut sebagai Last-In-First-Out (LIFO) data structure. Kalimat sederhana yang dapat menjelaskan konsep tersebut adalah kalimat “Masuk belakangan keluar duluan”.Apa itu stack ?
Stack adalah sebuah abstract data type (ADT) yang berisi koleksi data item yang hanya dapat diakses pada akhir bagian stack tersebut, biasa disebut top. Hal ini berarti bahwa didalam sebuah stack, kita dapat memasukkan (insert) dan menghapus (delete) item hanya dari posisi top tersebut. Item terakhir yang kita masukkan kedalam sebuah stack adalah item yang paling pertama harus kita keluarkan. Itulah mengapa stack disebut sebagai Last-In-First-Out (LIFO) data structure. Kalimat sederhana yang dapat menjelaskan konsep tersebut adalah kalimat “Masuk belakangan keluar duluan”.
Didalam kehidupan sehari-hari, terdapat beberapa contoh penerapan algoritma dari data structure ini, seperti dalam membuat suatu tumpukan piring, tumpukan buku, tumpukan koin, tusuk sate, atau bahkan cara memakai gelang. Salah satu contoh, dalam membuat suatu tumpukan piring kita pasti menempatkan piring pertama berada pada posisi paling  bawah, dan piring terakhir berada pada posisi paling atas. Nah, ketika kita hendak mencuci atau mengambil piring tersebut, maka kita akan mengambil piring pada tumpukkan atas terlebih dahulu dan seterusnya hingga mencapai piring paling bawah. Hal tersebut juga serupa pada tumpukan buku, koin, tusuk sate dan cara memakai gelang. Saya rasa ilustrasi tersebut cukup menjelaskan konsep LIFO dari stack.
PUSH DAN POP
q   Fungsi push: digunakan untuk menambahkan data ke dalam stack. Penambahan data tidak bisa dilakukan apabila stack sudah penuh. Urutan perintahnya adalah: menambahkan nilai top dan menambahkan data pada posisi nilai top. Jika dalam Linked List menggunakan method addLast.
q   Fungsi pop: digunakan untuk mengeluarkan data teratas stack dengan syarat bahwa stack tidak kosong. Urutan perintahnya adalah : menghapus data pada posisi nilai top dan menurunkan nilai top
Operasi Push
Operasi push adalah operasi dasar dari stack yang berguna untuk menambah suatu elemen data baru pada stack dan di simpan pada posisi top yang akan mengakibatkan posisi top akan berubah.
            Langkah-langkah operasi ini:
q   Periksa apakah stack penuh(isfull).jika bernilai false/0 (tidak penuh)maka proses push dilaksanakan dan jika pemeriksaan ini bernilai true/1,maka proses push digagalkan.
q   Proses push-nya sendiri adalah dengan menambahkan field top dengan 1,kemudian elemen pada posisi top di isi dengan elemen data baru.
Operasi Pop
q  Operasi Pop adalah salah satu operasi paling besar dari stack yang berguna untuk mengambil elemen terakhir(top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah.
q  Operasi ini biasanya dibuat dalam bentuk function yang me-return-kan nilai sesuai data yang ada di top. Operasi Pop pada Stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack  sedang keadaan kosong,jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top,kemudian disimpan dalam variabel baru dengan nama “data”.
CONTOH PROGRAM :
program stack;
uses winCrt;
const max = 100;
Var L : array [1..max] of char;
sisa, i, j, top : integer;
jawab : char;
kondisi : string;
procedure inisiasi;
Begin
top :=0;
end;
procedure CEK;
begin
 sisa := max - top;
 if top = max then
  kondisi := 'penuh'
 else
  if ((top < max) and (top > 0)) then
   kondisi := 'belum penuh'
  else
   kondisi := 'kosong'
end;
procedure PUSH;
begin
 write('Masukan data : ');
 readln(L[top+1]);
 top := top + 1;
end;
procedure TAMPIL;
begin
 writeln('Stack Yang Dihasilkan : ');
 for i := top downto 1 do
 begin
  writeln(L[i]);
 end;
end;
procedure POP;
begin
 top := top - 1
end;
BEGIN
 clrscr;
 inisiasi;
 jawab := 'Y';
 while ((jawab = 'Y') or (jawab = 'y')) do
 begin
  writeln('PROGRAM STACK');
  writeln('1. PUSH');
  writeln('2. POP');
  write('PILIH 1 ATAu 2 ?  ');
  readln(j);
  case j of
   1 : begin
     CEK;
     if kondisi = 'penuh' then
      writeln('STACK PENUH, ANDA TIDAK BISA MENAMBAH TUMPUKAN')
     else
     begin
if kondisi <> 'penuh' then
      begin
       CEK;
writeln ('Stack ', kondisi, ', Masih Bisa Menampung : ', sisa, ' data');
write ('Apakah Anda mau Menambah Data ? (Y/T)  ');
readln (jawab);
while (((jawab = 'Y') or (jawab = 'y')) and (kondisi <> 'penuh')) do
       begin
        PUSH;
        writeln;
        writeln;
        CEK;
        writeln;
        writeln;
        TAMPIL;
        writeln;
        writeln;

writeln ('Stack ', kondisi, 'Masih Bisa Menampung : ', sisa, ' data');
        write ('Apakah Anda mau Menambah Data ? (Y/T)  ');
        readln (jawab);
       end;
      end
      else
       writeln ('STACK PENUH');
     end;
    end;
   2 : begin
     write ('Apakah Anda Yakin Mau Menghapus Data ? (Y/T)  ');
     readln (jawab);
     while (((jawab = 'Y') or (jawab = 'y')) and (kondisi <> 'kosong')) do
     begin
      POP;
      writeln;
      writeln;
CEK;
      writeln;
      writeln;
      TAMPIL;
      writeln;
      writeln;
      writeln ('Stack Masih Bisa Dihapus : ', top, ' data');
      write ('Apakah Anda Mau Menghapus Data ? (Y/T)  ');
      readln (jawab);
     end;
     if kondisi = 'kosong' then
      writeln ('STACK KOSONG')
    end;
 end;
  write ('Apakah Mau Kembali Ke Menu Utama ? (Y/T)  ');
  readln (jawab);
 end;
END.



0 komentar: