STRUKTUR DATA Queue atau Antrian Pengertian Queue Queueantrian

  • Slides: 24
Download presentation
STRUKTUR DATA Queue atau Antrian

STRUKTUR DATA Queue atau Antrian

Pengertian Queue • Queue/antrian adalah ordered list dengan penyisipan di satu ujung, sedang penghapusan

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,

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:

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

Operasi Queue dengan Array • • • Create Empty Enqueue Full Dequeue getfront

Queue Linier Array • Terdapat satu buah pintu masuk di suatu ujung dan satu

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

Deklarasi Queue • Operasi-operasi: Create() – Untuk menciptakan dan menginisialisasi Queue – Dengan cara membuat Head dan Tail = -1

Create()

Create()

Is. Empty() – Untuk memeriksa apakah Antrian sudah penuh atau belum – Dengan cara

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

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

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

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

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

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

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

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 =

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

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

Tampilan Program