STACK
Stack memiliki prinsip LIFO (Last In First Out) atau FILO (First In Last Out), artinya data yang paling terakhir masuk ke dalam stack akan keluar paling pertama atau sebaliknya.
Stack memiliki 2 variabel, yaitu:
- TOP yang digunakan untuk menyimpan address dari elemen paling atas pada sebuah stack.
- MAX yang digunakan untuk menyimpan jumlah maksimum dari elemen yang dapat ditampung sebuah stack.
TOP selalu dimulai dari NULL. Dalam array, TOP = -1 karena array dimulai dari index ke-0.
- Jika TOP = NULL, maka stack-nya kosong.
- Jika TOP = MAX – 1, maka stack-nya penuh.
Operasi dalam stack:
- push(x) : Menambahkan sebuah item ke atas stack.
- pop() : Mengeluarkan sebuah item dari atas stack.
- top() : Menunjukkan item paling atas dari sebuah stack.
_______________________________________________________________________
QUEUE
Queue memiliki prinsip FIFO (First In First Out), artinya data yang paling pertama masuk akan keluar paling pertama. Namun sebuah queue tidak selamanya menggunakan prinsip FIFO. Sebuah queue dapat memiliki sistem prioritas (Priority Queue), artinya data yang memiliki prioritas lebih tinggi dapat keluar lebih awal.
Queue memiliki 2 variabel, yaitu:
- Front, untuk menyimpan address data paling depan pada queue.
- Back / Rear, untuk menyimpan address data paling belakang pada queue.
Front dan Rear selalu dimulai dari NULL, dalam array Front dan Rear sama dengan -1.
- Jika Front = Rear = NULL, maka queue-nya kosong.
Operasi dalam queue:
- push(x) : Menambahkan sebuah item ke belakang queue. Operasi ini disebut juga enqueue.
- pop() : Mengeluarkan sebuah item dari depan queue. Operasi ini disebut juga dequeue.
- front() : Menunjukkan item dari queue yang berada di paling depan. Operasi ini disebut juga peek.
Jenis queue:
- Queue (menggunakan prinsip First In First Out)
- Circular Queue (Queue akan kembali ke data pertama apabila telah mencapai data terakhir)
- Priority Queue (Antrian berdasarkan prioritas data)
_______________________________________________________________________
NOTASI ARITMATIKA
Ada 3 notasi aritmatika:
- Infix (Operator ditulis di antara Operand -> Operand Operator Operand), biasa digunakan.
- Prefix (Operator ditulis sebelum Operand -> Operator Operand Operand), disebut juga Reverse Polish Notation.
- Postfix (Operator ditulis setelah Operand -> Operand Operand Operator), disebut juga Polish Notation.
Prefix dan postfix tidak memerlukan kurung (brackets) untuk memprioritaskan operasi perhitungan serta lebih mudah dievaluasi oleh komputer.
Contoh Notasi Huruf:
Contoh Notasi Angka:
_______________________________________________________________________
DFS & BFS
- Depth First Search (DFS) merupakan suatu algoritma untuk melakukan penelusuran atau pencarian dalam tree atau graph. Proses pencarian ke dalam dulu baru ke samping. DFS menggunakan stack.
Contoh Depth First Search:
Visit Order: A, C, B, E, D
- Breadth First Search (BFS) merupakan suatu algoritma untuk melakukan penelusuran atau pencarian dalam tree atau graph. Proses pencarian ke samping dulu baru ke dalam. BFS menggunakan queue.
Contoh Breadth First Search:
Visit Order: A, B, C, D, E