Sunday, March 8, 2020

Stack & Queue

Stack
Stack adalah data struktur yang menyusun data secara berurutan.  Stack merupakan data struktur linear yang menggunakan prinsip LIFO (Last in First Out) yang berarti datang terakhir, keluar pertama. Stack dapat diimplementasikan menggunakan array ataupun linked list, masing-masing memiliki keutungan dan kelemahan masing-masing.  Menggunakan array akan lebih gampang karena array mereserve memory yang diperlukan lebih dahulu tetapi karena hal itu array tidak bisa fleksibel jika tiba-tiba kita perlu menambah elemen baru pada saat kapasitas array sudah penuh, kita tidak bisa melakukan itu karena array menyimpan memory yang sudah dipesan sehingga kita tidak dapat menambah kapasitas.  Link list kebalikan dari array jadi walau tidak bisa reserve memory dari awal dengan link list kita dapat menambah terus jika perlu.

Stack Operation terdapat 3 operasi pada stack yaitu:
  • Push(x): Menaruh elemen x diatas stack
  • Pop(): Menghilangkan elemen stack teratas
  • Top(): Mengambil data teratas stack


Infix, Prefix, dan Postfix
Secara simple:
  • Infix: Operasi matematika seperti biasa
  • Prefix: Operasi dimana operator ditulis terlebih dahulu sebelum operand
  • Postfix: Operasi dimana operand ditulis setelah operand
Contoh: 4+6*(5-2)/3 ubahlah ke bentuk postfix dan prefix!
  • Postfix: 4 6 5 2 - * 3/3
  • Prefix: + 4 * 6 - 5 2/3


Queue
Queue atau antiran adalah data struktur yang mirip dengan stack bedanya jika stack adalah LIFO, queue adalah FIFO (First in First Out).  Ide dari konsep queue ini sama seperti antrian di dunia nyata yaitu "One does not simply add a new person in front of a line after the former first in line is done"

Queue operation ada 3 yaitu:
  • Push(x): Menaruh elemen x diakhir queue
  • Pop(): Menghilangkan elemen terdepan queue
  • Front(): Mengambil data terdepan queue