1 of 17

STACK

Kelompok 2

  1. Ulfani Husna (18360003)
  2. Juwita Angel (18360027)
  3. Ibnu Wanafa (18360029)
  4. Dinda Lutfiyah (17360014)
  5. M.Sani Hilal S. (17360011)
  6. Erianwar Pradana (17360005)
  7. Ary Firdaus (17360018)
  8. Respati Farero (17360019)

2 of 17

Stack (Tumpukan)

  • Suatu susunan koleksi data dimana data dapat ditambahkan dan dihapus selalu dilakukan pada bagian akhir data, yang disebut dengat top of stack
  • Stack bersifat LIFO (Last In First Out)

3 of 17

Operasi Stack

  • Push : digunakan untuk menambah item pada stack pada tumpukan paling atas
  • Pop : untuk mengambil item pada stack pada tumpukan paling atas
  • Clear : untuk mengosongkan stack
  • Is Empty : untuk mengecek apakah stack sudah kosong
  • isFull : untuk mengecek apakah stack sudah penuh

4 of 17

Stack with Array of Struct

  • Definisikan stack dengan menggunakan satu struct
  • Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
  • Elemen struct stack adalah array data dan top untuk menandakan posisi data teratas
  • Buatlah variabel tumpuk sebagai implementasi dari struct stack
  • Deklarasikan operasi-operasi/function diatas dan buat implementasinya

5 of 17

Program Stack

  • Contoh deklarasi MAX_STACK

#define MAX_STACK 10

  • Contoh deklarasi STACK dengan struct dan array data

typedef struct STACK {

int top;

int data[10]; };

  • Deklarasi/buat variabel dan struct

STACK tumpuk;

6 of 17

Program Stack (2)

  • Pada mulanya isi top dengan -1, karena aaray dalam bahasa C dimulai dari 0, yang berarti bahwa data stack adalah kosong
  • Top adalah suatu variabel penanda dalam stack yang menunjukan elemen teratas data stack sekarang. Top of stack akan selalu bergerak hingga MAX of STACK yang menyebabkan stack penuh

7 of 17

Program Stack (2)

Ilustrasi stack

8 of 17

Program Stack (3)

Fungsi IsFull

  • Untuk memeriksa apakah stack sudah penuh
  • Dengan cara memeriksa top of stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum maka belum full

9 of 17

Program Stack (4)

Ilustrasi stack pada kondisi full

10 of 17

Program Stack (5)

Fungsi IsEmpty

  • Untuk memeriksa apakah stack masih kosong
  • Dengan cara memeriksa top of stack, jika masih -1 maka berarti data stack masih kosong

11 of 17

Program Stack (6)

  • Untuk memasukan elemen ke data stack. Data yang diinputkan selalu menjadi elemen teratas stack
  • Jika data belum penuh, tambah satu (increment) nilai top of stack lebih dahulu setiap kali ada penambahan dalam array data stack. Isikan data baru ke stack berdasarkan indeks top of stack yang telah di-increment sebelumnya
  • Jika tidak, output “penuh

12 of 17

Program Stack (7)

13 of 17

Program Stack (8)

Fungsi Pop

  • Untuk mengambil data stack yang terletak paling aas
  • Tampilkan terlebih dahulu nilai elemen teratas dengan mengakses indeksnya sesuai dengan top of stacknya, baru dilakukan di-decrement nilai top of stacknya sehingga jumlah elemen stack berkurang

14 of 17

Program Stack (9)

15 of 17

Program Stack (10)

Fungsi Print

  • Untuk menampilkan semua elemen-elemen data stack
  • Dengan cara me-loop semua nilai array secara terbalik, karena kita harus mengakses dadeks array tertinggi dahulu baru ke indeks yang lebih kecil

16 of 17

17 of 17

Program Stack (11)

Fungsi peek

  • Digunakan untuk melihat top of stack

int peek (){

return tumpuk.data{tumpuk.top};

}