-->

I'M Bayu Pradika

Graphic Designer . Web Developer . Programmer

Sabtu, 20 Agustus 2022

Algoritma Dan Struktur Data C++ BAB III (Queue)

 


Queue

printf("Hallo Para Programmer!!"); 

printf("Disini Saya Akan Menjelaskan Sedikit Dasar Mengenai Stack Dalam Bahasa C/C++"); 

printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");

printf("Selamat Belajar!!");

    Antrian (queue) adalah konsep penyimpanan sekumpulan data yang sering digunakan. Pada antrian data dapat disimpan dalam array atau linked list. Pada antrian, penunjuk posisi depan dan belakang harus disimpan. Apabila akan menambah data pada antrian maka menaikkan penunjuk belakang dan meletakkan data pada posisi tersebut. Apabila akan menghapus data pada antrian maka dihapus pada posisi depan dan menaikkan penunjuk depan. 

Karakteristik penting dari antrian adalah : 

    1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian 

    2. Front (penunjuk elemen terdepan dari antrian) 

    3. Rear (penunjuk elemen terakhir dari antrian) 

    4. Count (Jumlah elemen pada antrian) 

    5. Kondisi antrian Kondisi antrian yang harus diperhatikan adalah :

        a) Penuh Bila elemen pada antrian mencapai kapasitas maksimum antrian. Pada kondisi ini, tidak                mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi                        kesalahan Overflow. 

        b) Kosong Bila tidak ada elemen pada antrian. Pada kondisi ini, tidak mngkin dilakukan                            pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan                        Overflow. 

1. Antrian Dengan Array 

    Pada implementasi antrian dengan array, digunakan sejumlah array MAX untuk menyimpan data. Untuk menunjuk bagian depan dan bagian belakang digunakan variable Front dan Rear. Bila antrian kosong, nilainya diset -1. Untuk operasi penambahan dan penghapusan diimplementasikan dua fungsi yaitu Tambah() dan Hapus(). 

    Pada saat menambah elemen baru pada antrian, pertama kali dicek apakah penambahan tersebut dimungkinkan atau tidak. Karena indeks array dimulai dengan 0 maka maksimum data yang dapat disimpan pada antrian adalah MAX-1. Jika semua elemen menempati ruang array maka antrian dalam kondisi penuh. Apabila data masih dapat ditambahkan pada antrian maka variable Rear dinaikkan satu dan data baru disimpan pada array. Apabila data baru ditambahkan ke antrian untuk pertama kali (dimana variable Front bernilai -1) maka variable Front diset 0 yang menandakan antrian tidak lagi kosong.

    Sebelum menghapus elemen dari antrian harus dipastikan apakah elemen tersedia untuk penghapusan. Jika tidak maka antrian dalam kondisi kosong. Sebaliknya bila tersedia data pada array maka dapat dilakukan penghapusan dan variable Front dinaikkan. Apabila nilai variable Front dan Rear sama (yang berarti antrian dalam keadaan kosong) maka Front dan Rear direset -1. 

    Misalnya akan dilakukan penambahan data pada antrian sampai semua array terisi. Pada kondisi ini nilai Rear menjadi MAX-1. Misalnya dilakukan penghapusan 5 elemen, maka antrian dikatakan dalam kondisi penuh meskipun 5 array pertama kosong. Untuk mengatasi kondisi ini maka diimplmentasikan antrian sebagai antrian sirkular (circular queue). Sehingga selama penambahan, jika sudah mencapai akhir array dan jika awal array kosong (sebagai akibat dari penghapusan) maka elemen baru ditambahkan pada awal array. 

2. Antrian Dengan Linked List 

    Array yang digunakan untuk mengimplementasikan antrian dideklarasikan mempunyai ukuran MAX. Ukuran ini ditentukan pada saat menulis program, tidak dapat diubah pada saat program berjalan. Sehingga pada saat menulis program, harus ditentukan ukuran memori maksimum yang diperlukan untuk membangun array. Hal ini berhubungan dengan deklarasi ruang memori yang tersedia. Jika jumlah elemen yang dapat disimpan dalam antrian kecil, maka banyak ruang memori yang tidak digunakan. Sebaliknya, jika jumlah elemen yang akan disimpan pada antrian terlalu banyak, maka menyebabkan overflow. Untuk menghindari hal tersebut terjadi dan keterbatasan memory maka digunakan struktur data yang disebut linked list. 

3. Studi Kasus : Simulasi Tempat Parkir 

• Ada suatu tempat parkir yang hanya bisa memuat mobil dalam satu baris, jumlah mobil yang bisa masuk dibatasi 10 mobil. 

• Mobil masuk lewat pintu Utara (belakang) dan keluar lewat pintu Selatan (depan). Setiap mobil yang masuk diberi nomor. 

• 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)

    Sebenarnya simulasi ini selain berisi antrian (queue) juga berisi tumpukan (stack), yakni pada saat sebuah mobil yang berada di 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 di-pop kembali. Dengan cara ini semua mobil akan mempunyai posisi yang sama seperti sebelum suatu mobil dikeluarkan dari tempat parkir.

 

 Baca Juga:

1. Algoritma Dan Struktur Data C++ BAB I (Array, Pointer, Struktur)

2. Contoh Program C++ Tentang Array, Pointer, Dan Struktur

3. Algoritma Dan Struktur Data C++ BAB II (Stack)

4. Contoh Program C++ Tentang Stack

 

 

 

 

 

 

 

 

 

 

 

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna Veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

0 comments:

Categories

Contact Us

BAYU
+62 896-2690-9619
Kampar, Riau, Indonesia