Algoritma dan Struktur Data Queue Queue Apakah queue itu? • Queue merupakan linear list di mana data dimasukkan melalui sebuah ujung yang disebut end/rear dan dihapus dari ujung lain yang disebut front • first in – first out (FIFO) Operasi queue • Enqueue • Dequeue • Queue Front • Queue Rear • Queue Example Enqueue • Memasukkan data baru ke rear. Dequeue • Menghapus data yang ada di front. Queue front • Mengembalikan elemen yang ada di front tanpa menghapusnya Queue rear • Mengembalikan elemen yang ada di rear tanpa menghapusnya (Continued) Implementasi queue dengan linked list • Struktur data queue • Algorithms Data structure pointer Queue algorithms • • • • • Create queue Enqueue Dequeue Queuefront Queuerear • • • • Empty queue Full queue Queue count Destroy queue (Continued) Create queue enqueue dequeue ADT Queue • Struktur Queue • Algoritma ADT Queue 傳進來的是儲存資料變數的位 址,用區域指標變數來接。 dequeue (queue, (void*)&dataPtr) 傳進來的是儲存指到資料變數的指標 變數的位址,用區域指標變數(一個指 到指標變數的指標變數)來接。 queueFront (queue, (void*)&dataPtr) queueRear (queue, (void*)&dataPtr) Contoh penggunaan queue •Mengkategorikan data Mengkategorikan data • Kadang kita butuh menyusun ulang data tanpa mengubah urutan aslinya. • Example: – 3 22 12 6 10 34 65 29 9 30 81 4 5 19 20 57 44 99 – We want the list rearranged as shown below. • Less than 10 : 36945 • Between 10 and 19 : 12 10 19 • Between 20 and 29 : 22 29 20 • 30 and greater : 34 65 30 81 57 44 99 Desain • Queue category • Mengisi kategori queue (Continued) (Continued) (Continued) EXIT Problem program simulasi tempat parkir. IN Program simulasi ini didasarkan pada persoalan berikut. Ada suatu tempat parkir yang hanya bisa memuat mobil dalam satu baris, jumlah mobil yang bisa masuk untuk nomor ini bisa dibatasi. Mobil masuk lewat pintu Utara (belakang) dan keluar lewat pintu Selatan (depan). Jika mobil yang berada paling depan (di sisi paling Selatan) akan keluar maka mobil tersebut segera bisa keluar. Tetapi jika mobil yang akan keluar adalah mobil yang di tengah, maka mobil yang terletak di depannya (di sebelah Selatan) harus dikeluarkan sementara. Setelah mobil yang dimaksud keluar, maka mobil yang dikeluarkan sementara tadi dimasukkan kembali ke tempat parkir dengan susunan seperti semula. Sehingga mobil yang semula berada paling depan tetap berada pada posisinya semula. Mobil-mobil yang terletak di sebelah Utaranya mobil yang keluar tadi digeser maju ke depan, sehingga bagian kosong selalu berada pada pintu Utara (belakang). Dengan memperhatikan persoalan di atas, sebenarnya simulasi ini selain berisi antrian juga berisi tumpukan, yakni pada saat sebuah mobil yang berada di 37 tengah akan dikeluarkan, maka semua mobil yang ada di sebelah Selatannya ditumpuk (di-push) di tempat penampungan sementara. Baru setelah mobil yang dimaksud keluar, maka semua mobil yang berada di tempat penampungan sementara dipop kembali. Dengan cara ini semua mobil akan mempunyai posisi yang sama seperti sebelum suatu mobil dikeluarkan dari tempat parkir.