12:21 Pemrograman Web 0 Comments


A. Stack 
1. Stack (tumpukan) adalah sebuah cara dalam mengorganisir data-data yang dimiliki. Seperti menyimpan buku-buku, ada yang disusun dengan cara ditumpuk, ada juga yang dijejerkan di dalam lemari. Kaidah utama dalam konsep stack adalah LIFO yang merupakan kependekan dari Last In First Out, artinya adalah data yang terakhir kali dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan diakses atau dikeluarkan.
2. Deklarasi stack dalam sebuah program komputer dideklarasikan sebagai sebuah tipe bentukan baru, di dalam Bahasa C, biasa disebut struct. Sebuah struktur data dari sebuah stack setidaknya harus mengandung dua buah variabel, yakni variabel TOP yang akan berguna sebagai penanda bagian atas tumpukan dan ARRAY DATA dari yang akan menyimpan data-data yang dimasukkan ke dalam stack tersebut. Berikut adalah syntax untuk mendeklarasikan struktur data dari sebuah stack menggunakan Bahasa C: 
 typedef struct
int TOP; 
int data[max+1];
}
Stack; 
dimana, nilai MAX ini didefinisikan sebagai jumlah tumpukan maksimum yang dapat disimpan dalam stack. Setelah strukutr data dari stack didefinisikan dengan syntax di atas, maka setelah itu dapat dibuat variabel-variabel baru yang mengacu pada tipe data Stack di atas, misalkan membuat sebuah variabel bernama tumpukan yang bertipe Stack: 
 Stack tumpukan; 
Sebuah stack didefinisikan dengan array berukuran MAX + 1, maksudnya adalah agar elemen array ke-0 tidak digunakan untuk menyimpan data, melainkan hanya sebagai tempat “singgah” sementara untuk variabel TOP. Sehingga, jika TOP berada pada elemen array ke-0, berarti stack tersebut dalam kondisi kosong (tidak ada data yang disimpan). Berikut adalah ilustrasi dari sebuah stack kosong dengan ukuran nilai MAX = 6: 
3. Operasi-operasi dasar dalam stack Sebuah stack ada lima buah operasi-operasi dasar, yakni:
a. Prosedur createEmpty Prosedur ini berfungsi untuk mengosongkan stack dengan cara meletakkan TOP ke posisi ke-0. Berikut adalah deklarasi prosedur createEmpty dalam Bahasa C: 
 void createEmpty()
tumpukan.TOP = 0;
}
                b. Prosedur push Prosedur ini berfungsi untuk memasukkan sebuah nilai/ data ke dalam stack. Sebelum sebuah nilai/ data dimasukkan ke dalam stack, prosedur ini terlebih dahulu akan menaikkan posisi TOP satu level ke atas. Misalkan kondisi stack masih kosong (TOP = 0), lalu prosedur push akan menaikkan posisi TOP satu level ke atas, yakni ke posisi 1 (TOP = 1), baru setelah itu data dimasukkan ke dalam array pada indeks ke-1 (yakni indeks dimana TOP berada). Berikut adalah deklarasi prosedur push dalam Bahasa C: 
 void push(int x) 
tumpukan.TOP = tumpukan.TOP + 1; 
tumpukan.data[tumpukan.TOP] = x;
Pada deklarasi prosedur push di atas, prosedur memiliki sebuah parameter formal yang bernama “x” yang bertipe integer. Parameter formal “x” ini berguna untuk menerima kiriman nilai dari program utama (void main()) yakni berupa sebuah bilangan integer yang akan dimasukkan ke dalam stack. Sebelum nilai pada variabel “x” dimasukkan ke dalam stack, terlebih dahulu posisi TOP dinaikkan satu level, baru setelah itu nilai pada variabel “x” dimasukkan ke dalam array data pada indeks dimana TOP itu berada.   
c. Prosedur pop Prosedur ini berfungsi untuk mengeluarkan/ menghapus nilai terakhir (yang berada pada posisi paling atas) dari stack, dengan cara menurunkan nilai TOP satu level ke bawah. Misalkan TOP berada pada indeks ke-5, maka ketika akan mengeluarkan/ menghapus data pada posisi paling atas (pada posisi TOP), prosedur ini akan menurunkan posisi TOP ke indeks array ke-4. Berikut deklarasi prosedur pop dalam Bahasa C: 
void pop() 
tumpukan.TOP = tumpukan.TOP - 1; 
}               
d. Fungsi IsEmpty Fungsi ini berfungsi untuk melakukan pengecekan terhadap stack, apakah stack tersebut kosong atau tidak. Jika stack tersebut kosong (artinya, TOP berada pada posisi 0), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika stack tersebut tidak kosong/ berisi (artinya, TOP tidak berada pada posisi 0), maka fungsi akan mengembalikan nilai 0 (false). Berikut deklarasi fungsi IsEmpty dalam Bahasa C: 
int IsEmpty() 
if (tumpukan.TOP == 0) 
 return 1; 
else  
return 0;
e. Fungsi IsFull Fungsi ini berfungsi untuk melakukan pengecekan terhadap stack, apakah stack tersebut penuh atau tidak. Jika stack tersebut penuh (artinya, TOP berada pada posisi MAX), maka fungsi akan mengembalikan nilai 1 (true), tetapi jika stack tersebut tidak penuh  (artinya, TOP tidak berada pada posisi MAX), maka fungsi akan mengembalikan nilai 0 (false). Berikut deklarasi fungsi IsFull dalam Bahasa C: 
int IsFull() 
{  
if (tumpukan.TOP == MAX)   
return 1;  
else    return 0;
4. Dibawah ini adalah contoh kode program dalam Bahasa C yang mengimplementasikan konsep stack. Pada program ini, user disuguhi beberapa menu utama yang akan dipilih oleh user. Menu pertama, “Check the condition” akan melakukan pengecekan terhadap kondisi stack. Menu kedua, “add data” akan melakukan pengisian sebuah nilai ke dalam stack. Menu ketiga, “clear stack”, akan menampilkan semua isi stack dan akan mengosongkan stack. Menu keempat, “clear stack”, akan melakukan pengosongan stack, dan menu kelima, “exit”, akan menghentikan eksekusi program (selesai menggunakan program).

Restiyana Dwi Astuti - 1154077 - Algoritma dan Struktur Data

0 komentar: