Lompat ke konten Lompat ke sidebar Lompat ke footer

STACK

STACK pada Struktur Data



“A stack is an ordered collection of items into which new items may be inserted and from which items may be deleted at one end, called top of the stack” ( Yedidyah L, Moshe J. A., and Aaron M. Tenenbaum; Data Structures Using C and C++)


Stack merupakan bentuk khusus dari Linier List yang pemasukan dan penghapusan elemennya hanya dapat dilakukan pada satu posisi, yaitu posisi akhir dari List (Top).

Prinsip Stack adalah Last in First Out (LIFO).

Operasi Stack

  • ISEMPTY; untuk memeriksa apakah stack kosong
  • ISFULL: untuk memeriksa apakah stack sudah penuh
  • PUSH: untuk menambahkan item pada posisi paling atas (TOP)
  • POP: untuk menghapus item paling atas (TOP)
  • CLEAR: untuk mengosongkan STACK

STACK pada ARRAY


Deklarasi MAX_STACK
        #define MAX_STACK 5

Deklarasi STACK dengan struct dan array data
    typedef struct STACK{
    int top;
    int data[5];
    };

Deklarasi variabel stack dari struct
    STACK tumpuk;


Inisialisasi STACK

  • Pada mulanya isi top dengan -1, karena array dalam C/C++ dimulai dari 0, berarti stack adalah KOSONG.
  • TOP adalah variabel penanda dalam STACK yang menunjukkan elemen teratas STACK.
  • TOP of STACK akan selalu bergerak hingga mencapai MAX of STACK sehingga menyebabkan stack PENUH.


Fungsi IsEmpty

Digunakan untuk memeriksa apakah stack masih dalam kondisi kosong
Dengan cara memeriksa TOP of STACK.  Jika TOP masih =-1 maka berarti stack masih kosong.

    int IsEmpty()
    {
        if(tumpuk.top = = -1
                   return 1;
        else
                    return 0;
    }


Fungsi isFull

  • Digunakan untuk memeriksa apakah kondisi stack sudah penuh
  • Dengan cara memeriksa TOP of STACK.
  • Jika TOP of STACK = MAX_STACK-1 maka FULL (Penuh)
  • Jika TOP of STACK < MAX_STACK-1 maka belum penuh

        int isFull()
        {
            if(tumpuk.top = = MAX_STACK-1
                    return 1;
            else
                    return 0;
          }


Fungsi PUSH

Digunakan untuk memasukkan elemen ke dalam stack dan selalu menjadi elemen teratas stack

Dengan cara:
  • Menambah satu (increment) nilai TOP of STACK setiap ada penambahan elemen stack selama stack masih belum penuh
  • Isikan nilai baru ke stack berdasarkan indeks TOP of STACK setelah ditambah satu (diincrement)
    void push (char d[5])
    {
        tumpuk.top++
        strcpy(tumpuk.data[tumpuk.top],d);
    }


Fungsi POP

Digunakan untuk menghapus elemen yang berada pada posisi paling atas dari stack.

Dengan cara:
  • Ambil dahulu nilai elemen teratas stack dengan mengakses TOP of STACK
  • Tampilkan nilai yang akan diambil
  • Lakukan decrement nilai TOP of STACK sehingga jumlah elemen stack berkurang 1

    void pop()
    {
        printf("Data yang di POP = %s\n, tumpuk.data[tumpuk.top]);tumpuk.top - -;
    }


Fungsi CLEAR

Digunakan untuk mengosongkan stack sehingga TOP pada Stack berada kembali di posisi TOP= -1

    void clear ()
    {
        tumpuk.data=tumpuk.top = -1
        printf("Data clear");
    }