0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan20 halaman

Stack Dan Queue

Diunggah oleh

alfian.darmawan014
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
12 tayangan20 halaman

Stack Dan Queue

Diunggah oleh

alfian.darmawan014
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PPTX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 20

STACK DAN QUEUE

DEFINISI STACK
STACK adalah suatu bentuk khusus dari linear
list di mana operasi penyisipan dan
penghapusan atas elemen-elemennya hanya
dapat dilakukan pada satu sisi saja yaitu posisi
akhir dari list.
Posisi akhir disebut sebagai puncak atau
“TOP(S)”.
DEFINISI STACK
• Prinsip Stack adalah LIFO ( Last In First Out )
atau Terakhir masuk pertama keluar.
• Elemen teratas (puncak) dari stack
dinotasikan sebagai TOP(S)
Misal diberikan stack S sebagai berikut :
S= [ S1,S2,………, ST ]  maka TOP(S) = ST
• Untuk menunjukkan jumlah elemen suatu
stack digunakan notasi NOEL(S).
• Dari stack diatas maka NOEL(S) = T.
STACK
CONTOH :
Jika diberikan sebuah stack S = [A,B,C,D] maka
stack S ini dapat digambarkan sebagai berikut :
Operasi Stack :
• CREATE(S)
Operator ini berfungsi untuk membuat sebuah
stack kosong (menjadi hampa) dan didefinisikan
bahwa
NOEL (CREATE (S)) = 0 dan
TOP (CREATE(S)) = null / tidak terdefinisi
a
Operasi Stack :
• ISEMPTY(S)
Operator ini berfungsi untuk menentukan apakah
suatu stack adalah stack kosong (hampa) atau tidak .
Operasinya akan bernilai boolean dengan definisi
sebagai berikut :
ISEMPTY(S) = true, jika S adalah stack kosong
atau NOEL(S) = 0
False, jika S bukan stack kosong
atau NOEL(S)  0
Catatan : ISEMPTY(CREATE(S)) = true
Operasi Stack :
• PUSH(E,S)
Operator ini berfungsi untuk menambahkan satu
elemen ke dalam stack . Notasi yang digunakan
adalah PUSH(E,S)
Artinya : menambahkan elemen E ke dalam stack S
Operasi Stack :

• Elemen yang baru masuk ini akan menempati


posisi TOP jadi TOP(PUSH(E,S)) = E
Akibat dari operasi ini jumlah elemen dalam stack

akan bertambah, artinya NOEL (S) menjadi lebih


besar atau stack menjadi tidak kosong
(ISEMPTY(PUSH(E,S)) = false )
Operasi Stack :
• POP(S)
Operator ini berfungsi untuk mengeluarkan satu
elemen dari dalam stack, notasinya POP(S)
• Elemen yang keluar dari dalam stack adalah
elemen yang berada pada posisi TOP.
• Akibat dari operasi ini jumlah elemen stack akan
berkurang atau NOEL(S) berkurang 1 dan elemen
pada posisi TOP akan berubah.
Operasi Stack :
• Operator ini tidak dapat digunakan pada stack
kosong, artinya
POP(CREATE(S)) = error condition dan
POP(PUSH(E,S)) = S
Contoh Stack
• Stack yang disimpan dalam array dengan 6
lokasi memori
1. CREATE(S) 10. TOP(POP(S)) = …
2. NOEL(S) = … . 11. TOP(PUSH(POP(POP(S))E,S)) = ….
3. ISEMPTY(S) = … 12. TOP(POP(PUSH(F,PUSH(G,S)))) = …
5. PUSH(B,S) 13. NOEL(S) = … …
6. PUSH(C,S) 14. ISEMPTY(S) = …..
7. TOP(PUSH(D,S)) = … 15. NOEL(CREATE(S)) = ….
8. NOEL(S) = … 16. ISEMPTY(S) = …
9. ISEMPTY(S) = …
(PUSH(C,PUSH(B,PUSH(A,S))))
QUEUE
 Queue adalah suatu bentuk khusus dari
linear list dengan operasi penyisipan
(insertion) hanya pada salah satu sisi ( Rear/
belakang) dan operasi penghapusan
(deletion) hanya diperbolehkan pada sisi
lainnya (Front/ depan) dari list.
 Antrean beroperasi secara FIFO ( First In First
Out) yang pertama masuk, yang pertama
keluar.
QUEUE
Antrean Q = [ Q1, Q2, Q3,……….., QT]
Front(Q) = bagian depan dari antrean Q
Rear(Q) = bagian belakang dari antrean Q
Noel(Q) = Jumlah elemen di dalam
antrean ( berharga integer)

Jadi : Front(Q) = Q1
Rear(Q) = QT
Noel(Q) = T
Operasi QUEUE
• CREATE(Q)
Operator untuk membentuk suatu antrean
hampa
Q = [,…….,]

NOEL(CREATE(Q)) = 0
FRONT(CREATE(Q)) = tidak didefinisikan
REAR(CREATE(Q)) = tidak didefinisikan
Operasi QUEUE
• ISEMPTY(Q)

Operator yang menentukan apakah antrean Q


hampa atau tidak.
Hasilnya bertipe data Boolean
ISEMPTY(Q) =TRUE jika Q adalah antrean
hampa (NOEL(Q) = 0)
FALSE jika Q bukan antrean
kosong (NOEL(Q)  0)
Operasi QUEUE
• INSERT(E,Q)
Operator yang menyisipkan elemen ke dalam
antrean Q
Q = [ A, B, C, D]
FRONT(Q) = A REAR (Q) = D

REAR(INSERT(E,Q)) = E jadi Q = [ A, B, C, D, E]
FRONT(Q) = A REAR (Q) = E
NOEL(Q) = 5 ISEMPTY(Q) = FALSE
Operasi QUEUE
• REMOVE(Q)
Operator yang menghapus elemen bagian
depan dari antrean Q dan antrean menjadi
lebih pendek

Jika NOEL(Q) = 0 maka


REMOVE(Q) = ERROR ( UNDERFLOW)
Operasi QUEUE
• REMOVE(Q)
Operator yang menghapus elemen bagian
depan dari antrean Q dan antrean menjadi
lebih pendek

Jika NOEL(Q) = 0 maka


REMOVE(Q) = ERROR ( UNDERFLOW)
QUEUE
Contoh :
Antrean yang disimpan dalam array dengan 5
lokasi memori sebagai array Sirkular.
Diket : Q=(A,C,D) dengan F=2, R=4 atau
. A C D
1 2 3 4 5

FRONT(Q) = ……, REAR(K) = …....


QUEUE

1 2 3 4 5

1. FRONT(Q) = … , REAR(Q) = … 5. REMOVE(REMOVE(Q))


2. INSERT(F,Q) FRONT(Q) = ……. , REAR(Q) = ….
FRONT(Q) = ….. , REAR(Q) = … 6. NOEL (Q) = ……
3. REMOVE(REMOVE(Q)) 7. ISEMPTY(Q) = …
FRONT(Q) = … , REAR(Q) = ….. 8. INSERT(R,Q)
4. INSERT(K,INSERT(L, INSERT(M,S))) FRONT(Q) = ……., REAR(Q) = ……
FRONT(Q) = … , REAR(Q) = …

Anda mungkin juga menyukai