Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Implementasi Queue Implementasi queue lebih sulit daripada stack. Pada stack, penambahan dan penghapusan data hanya dilakukan pada satu ujung saja, sehingga.

Presentasi serupa


Presentasi berjudul: "Implementasi Queue Implementasi queue lebih sulit daripada stack. Pada stack, penambahan dan penghapusan data hanya dilakukan pada satu ujung saja, sehingga."— Transcript presentasi:

1 Implementasi Queue Implementasi queue lebih sulit daripada stack. Pada stack, penambahan dan penghapusan data hanya dilakukan pada satu ujung saja, sehingga cukup mengubah posisi pointer sesuai dengan penambahan/pengurangan data Implementasi queue, harus mengubah posisi DUA buah pointer, yaitu pointer yang menunjuk ke FRONT, dan pointer yagn menunjuk ke REAR Ada dua cara implementasi queue: stackqueue rearfront

2 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front rear Queue adalah pada bagian yang berwarna hijau ujung depan ujung belakang

3 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front rear Queue adalah pada bagian yang berwarna hijau ujung depan ujung belakang

4 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front rear Queue adalah pada bagian yang berwarna hijau ujung depan ujung belakang

5 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau ujung depan x 11 rear ujung belakang

6 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau ujung depan x 11 rear ujung belakang

7 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau x 11 rear

8 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau x 11 rear

9 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau x 11 rear

10 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau x 11 rear

11 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau x 11 rear

12 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … front Queue adalah pada bagian yang berwarna hijau x 11 rear

13 Cara 1 Tempatkan data pada sebuah array, dan setlah pointer agar menunjuk ke posisi FRONT dan REAR Saat data ditambahkan ke queue, naikkan posisi pointer REAR Saat data dihapus dari queue, naikkan posisi pointer FRONT Saat front==rear, berarti queue kosong x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 Array x … … Queue adalah pada bagian yang berwarna hijau x 11 front==rear

14 Masalah yang timbul pada Cara 1 Front dari rear selalu bertambah secara motononik, sehingga memerlukan array dengan ukuran tak terhingga Menyambungkan FRONT dan REAR dari array itu sehingga membentuk cincin (RING BUFFER) front rear x3x3 x4x4 x5x5 x6x6 x7x7 x8x8 x9x9 x 10 x 11 x 12 array x … … Pointer selalu bergerak ke kanan, tak pernah kembali

15 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear 0 1 n-1 n-2 rear front Cara 1 Queue adalah pada bagian yang berwarna hijau

16 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear 0 1 n-1 n-2 rear front Cara 1 Queue adalah pada bagian yang berwarna hijau

17 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear 0 1 n-1 n-2 rear front Cara 1 Queue adalah pada bagian yang berwarna hijau

18 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear Cara 1 Queue adalah pada bagian yang berwarna hijau 0 1 n-1 n-2 rear front

19 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear Cara 1 Queue adalah pada bagian yang berwarna hijau 0 1 n-1 n-2 rear front

20 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear Cara 1 Queue adalah pada bagian yang berwarna hijau 0 1 n-1 n-2 rear front

21 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear Cara 1 Queue adalah pada bagian yang berwarna hijau 0 1 n-1 n-2 rear front

22 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear Cara 1 Queue adalah pada bagian yang berwarna hijau 0 1 n-1 n-2 rear front

23 Array dibuat seperti cincin, dimana elemen terakhir disambungkan dengan elemen pertama Menambahkan data ke queue: nilai rear dinaikkan satu Menghapus data dari queue: nilai front dinaikkan satu Queue kosong pada saat front==rear Cara 1 Queue adalah pada bagian yang berwarna hijau 0 1 n-1 n-2 rear==front

24 Masalah pada Ring Buffer Pada saat rear==front, ada dua interpretasi yang muncul, “queue kosong” ataukah “queue full” full 0 1 n-1 n-2 rear==front empty 0 1 n-1 n-2 rear==front Queue adalah pada bagian yang berwarna hijau

25 Masalah pada Ring Buffer Solusi –Menyiapkan sebuah FLAG untuk memberi tanda kalau queue kosong –Queue dijaga agar tidak pernah full, dengan menyisakan sebuah elemen yang kosong 0n-1 1n-2

26 Contoh hasil eksekusi [1] tambahkan task [2] eksekusi [3] selesai 1 Isi task : baca buku Kondisi QUEUE : [0] baca buku [1] tambahkan task [2] eksekusi [3] selesai 1 Isi task : membuat program Kondisi QUEUE : [0] baca buku [1] membuat program [1] tambahkan task [2] eksekusi [3] selesai 2 Menjalankan task : baca buku Kondisi QUEUE : [1] membuat program

27 Hint Dalam fungsi enqueue/dequeue, posisi pointer front dan rear harus diupdate sehingga menunjuk ke posisi yang benar –Pengubahan posisi tsb. Memakai fungsi next() –Pada fungsi next(), sisa pembagian dihitung dengan cara membaginya dengan QUEUE_SIZE, sehingga jika nilai itu melebih QUEUE_SIZE, dia akan kembali ke ujung depan queue . –Posisi berikutnya dihitung dengan posisiberikutnya =next(posisi saat ini)


Download ppt "Implementasi Queue Implementasi queue lebih sulit daripada stack. Pada stack, penambahan dan penghapusan data hanya dilakukan pada satu ujung saja, sehingga."

Presentasi serupa


Iklan oleh Google