Stack
Stack biasa disebut sebagai LIFO (Last In First Out), jadi
data yang terakhir masuk akan di pop/ keluar duluan. Sebagai contoh seperti
saat kita mencuci piring dan terdapat tumpukan piring, maka kita akan
mengambilnya dari yang paling atas dahulu secara berurutan. Kurang lebih cara
kerja stack seperti itu.
Dalam stack umumnya terdapat 3 proses operasi yang dilakukan
:
a. push (x) : menumpuk item x diatas stack.
b. pop( ) : menghapus / mengambil data paling atas.
c. top ( ) : melihat item / value data paling atas pada stack.
a. push (x) : menumpuk item x diatas stack.
b. pop( ) : menghapus / mengambil data paling atas.
c. top ( ) : melihat item / value data paling atas pada stack.
Queue
Queue biasa disebut sebagai FIFO (First In First Out), jadi
data yang masuk pertama akan di pop/ keluarkan dahulu. Sebagai contoh seperti
saat kita mengantri, tentu saja orang paling depan akan dilayani / dapat
menggunakan fasilitas dahulu. Kurang lebih ara kerja Queue seperti itu.
Dalam queue umumnya terdapat 3 proses operasi yang dilakukan
:
a. push(x) : menambah antrian data pada queue.
b. pop( ) : menghapus / mengambil data paling depan.
C. first( ) : melihat data paling depan
a. push(x) : menambah antrian data pada queue.
b. pop( ) : menghapus / mengambil data paling depan.
C. first( ) : melihat data paling depan
Queue memiliki kekurangan, yaitu jika head telah mencapai
batas array (head sudah sama dengan tail di array terakhir) karena head akan
terus maju mendekati tail saat dilakukan proses pop( ). Maka dari itu, terdapat
Circular Queue dimana kita dapat menukar index L dan R dengan men-set R
menjadi 0 dan sama juga L.
Terdapat pula jenis queue berupa Deques (Double Ended Queue)
dimana data dapat di push ke kanan atau kekiri.
- Input restricted deque : push dibatasi (1 tempat)
- Output restricted deque : pop dibatasi (1 tempat)
- Input restricted deque : push dibatasi (1 tempat)
- Output restricted deque : pop dibatasi (1 tempat)
Infix, Prefix, dan Postfix notation.
Operasi Infix : opd opr opd, ct : 4 * 10
Operasi Prefix : opr opd opd, ct : * 4 10
Operasi Postfix : opd opd opr, ct : 4 10 *
Operasi Prefix : opr opd opd, ct : * 4 10
Operasi Postfix : opd opd opr, ct : 4 10 *
Ketiga operasi ini digunakan pada masa lalu karena computer dimasa
lalu tidak dapat menghitung / mendeteksi tanda kurung ( ), maka infix harus
diubah ke prefix atau postfix lalu dilakukan pengecekan satu persatu. Hal ini
dilakukan untuk mempercepat kerja computer dari O^n2 menjadi O^n
saja.
Contoh :
Infix = ( 1 + 3 ) / ( 100 * 5) ^ 30
Dalam mengubah infix menjadi prefix ataupun postfix harus
dilakukan secara urut menurut tingkatan / hirarki yang paling tinggi.
Prefix :
( 1 + 3 ) / ( 100 * 5) ^ 30
( 1 + 3 ) dan ( 100 * 5 ) memiliki tingkat yang sama maka kerjakan dari yang kiri dahulu :
ó + 1 3 / ( 100 * 5 ) ^ 30
ó + 1 3 / ( * 5 100 ) ^ 30
ó ( + 1 3 ) / ^ * 5 100 30
ó / + 1 3 ^ * 5 100 30
hasil ubah ini akan dijadikan string dan dilakukan pengecekan dari kanan.
( 1 + 3 ) dan ( 100 * 5 ) memiliki tingkat yang sama maka kerjakan dari yang kiri dahulu :
ó + 1 3 / ( 100 * 5 ) ^ 30
ó + 1 3 / ( * 5 100 ) ^ 30
ó ( + 1 3 ) / ^ * 5 100 30
ó / + 1 3 ^ * 5 100 30
hasil ubah ini akan dijadikan string dan dilakukan pengecekan dari kanan.
Postfix :
( 1 + 3 ) / ( 100 * 5) ^ 30
ó 1 3 + / ( 100 5 * ) ^ 30
ó 1 3 + / 100 5 * 30 ^
ó 1 3 + 100 5 * 30 ^ /
hasil ubah ini akan dijadikan string dan dilakukan pengecekan dari kiri.
ó 1 3 + / ( 100 5 * ) ^ 30
ó 1 3 + / 100 5 * 30 ^
ó 1 3 + 100 5 * 30 ^ /
hasil ubah ini akan dijadikan string dan dilakukan pengecekan dari kiri.
DFS dan BFS
DFS (Depth First Search) biasa digunakan dalam stack, dimana
search pada struktur graf / pohon yang dilakukan berdasarkan kedalamannya.
BFS (Breadth First Search) biasa digunakan dalam queue, diamana
search pada struktur graf / pohon yang dilakukan secara melebar.
node yang dilewati : A-> B -> C -> D -> E






Komentar
Posting Komentar