STRUKTUR DATA Queue atau Antrian Pengertian Queue Queueantrian
- Slides: 24
STRUKTUR DATA Queue atau Antrian
Pengertian Queue • Queue/antrian adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan di ujung lain. • Ujung penyisipan disebut rear/tail. • Ujung penghapusan disebut front/head. • Head/front menunjuk ke awal antrian(elemen terdepan), sedangkan tail/rear menunjuk ke akhir antrian (elemen paling belakang). • Bersifat FIFO (First In First Out) yaitu Elemen yang pertama kali masuk ke antrian akan keluar pertama kalinya.
Penggunaan Queue Simulasi antrian di dunia nyata, antara lain : • Lalu lintas udara, tinggal landas(take-off) dan pendaratan(landing) • Antrian pembelian tiket di depan loket untuk bis, kereta api, bioskop • Antrian mobil di depan gerbang jalan tol • Antrian kendaraan di jalan umum.
Operasi Queue • Create : membuat queue baru yang masih kosong • En. Queue: Memasukkan/menyisipkan data baru pada tail (queue) • De. Queue: Mengeluarkan/menghapus data terdepan/pertama dari antrian (di front), jika queue tidak kosong • Clear: Menghapus seluruh antrian • Empty/Is. Empty: Memeriksa apakah antrian kosong(mengembalikan nilai true jika queue kosong) • Full/Is. Full: Memeriksa apakah antrian penuh (mengembalikan nilai true jika queue penuh) • getfront: mengambil data pertama (di front), jika queue tidak kosong.
Operasi Queue dengan Array • • • Create Empty Enqueue Full Dequeue getfront
Queue Linier Array • Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya • Sehingga membutuhkan 2 variabel: Head dan Tail
Deklarasi Queue • Operasi-operasi: Create() – Untuk menciptakan dan menginisialisasi Queue – Dengan cara membuat Head dan Tail = -1
Create()
Is. Empty() – Untuk memeriksa apakah Antrian sudah penuh atau belum – Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty – Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian (elemen pertama dalam antrian) yang tidak akan berubah-ubah – Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian kebelakang, yaitu menggunakan nilai Tail
Is. Full() – Untuk mengecek apakah Antrian sudah penuh atau belum – Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array) berarti sudah penuh
Enqueue() – Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang – Penambahan elemen selalu menggerakan variabel Tail dengan cara increment counter Tail terlebih dahulu
Dequeue() – Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian – Dengan cara menggeser semua elemen antrian kedepan dan mengurangi Tail dgn 1 atau bisa menambah head dgn 1
Clear() – Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1 – Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesannya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca
Tampil() – Untuk menampilkan nilai-nilai elemen Antrian – Menggunakan looping dari head s/d tail
Queue dengan Array #include<iostream. h> #include<conio. h> #include<stdlib. h> #define MAX 10 //ukuran maksimum queue void enqueue(int queue[], int *tail, int nilai); void dequeue(int queue[], int *head, int *tail, int *nilai); int main() { int queue[MAX]; int head, tail; int n, nilai; head = tail = (-1);
do { cout<<"Masukkan Nilai Elemen : "; cin>>nilai; enqueue(queue, &tail, nilai); Melanjutkan"<<endl; cout<<endl; cout<<"Tekan 1 untuk cin>>n; } while (n == 1); cout<<endl; cout<<"Tekan 1 untuk Menghapus Sebuah Elemen"<<endl; cin>>n;
while(n == 1) { dequeue(queue, &head, &tail, &nilai); cout<<"Nilai telah dihapus : "<<nilai<<endl; cout<<"Tekan 1 untuk Menghapus Sebuah Elemen : "; cin>>n; } cout<<endl; cout<<"Tekan 1 untuk Melanjutkan"<<endl; cin>>n; } while (n == 1); getch(); return 0; }
void enqueue(int queue[], int *tail, int nilai) { if(*tail < MAX-1) { *tail = *tail + 1; queue[*tail] = nilai; } else { cout<<"Queue Penuh, enqueue Tidak Dapat Dilakukan"<<endl; exit(0); } }
void dequeue(int queue[], int *head, int *tail, int *nilai) { if(*head == *tail) { cout<<"Queue Kosong, dequeue Tidak Dapat Dilakukan"<<endl; exit(0); } else { *head = *head + 1; *nilai = queue[*head]; } }
Tampilan Program
- Materi antrian struktur data
- Types of queue in data structure
- Struktur data queue
- Input restricted deque
- Struktur seleksi
- Pengertian percabangan
- Contoh soal teori antrian
- Contoh antrian
- Antrian
- Contoh satu saluran banyak tahap
- Teori antrian riset operasi
- Macam macam aturan antrian
- Deklarasi stack
- Dari gambar ini notasi prefix yang dihasilkan adalah
- Algoritma antrian
- Tipe data array
- Struktur data searching
- Pengertian searching dalam struktur data
- Pengertian struktur data
- Definisi queue
- Contoh algoritma stack
- Pengertian queue
- Queue abstract data type
- Priority queue abstract data type
- Abstract data type queue