1 / 24

STRUKTUR DATA

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 .

Download Presentation

STRUKTUR DATA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. STRUKTUR DATA Queue atauAntrian

  2. 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) yaituElemen yang pertama kali masukkeantrianakankeluarpertamakalinya.

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

  4. Operasi Queue • Create : membuat queue baru yang masih kosong • EnQueue: Memasukkan/menyisipkan data baru pada tail (queue) • DeQueue:Mengeluarkan/menghapus data terdepan/pertamadariantrian (di front), jika queue tidak kosong • Clear:Menghapusseluruhantrian • Empty/IsEmpty:Memeriksaapakahantriankosong(mengembalikan nilai true jika queue kosong) • Full/IsFull:Memeriksaapakahantrianpenuh (mengembalikan nilai true jika queue penuh) • getfront: mengambil data pertama (di front), jika queue tidak kosong.

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

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

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

  8. Create()

  9. IsEmpty() • 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

  10. IsFull() • 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

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

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

  13. 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 pengaksesan-nya ke nilai -1 sehingga elemen-elemen Antrian tidak lagi terbaca

  14. Tampil() • Untuk menampilkan nilai-nilai elemen Antrian • Menggunakan looping dari head s/d tail

  15. Queue dengan Array #include<iostream.h> #include<conio.h> #include<stdlib.h> #define MAX 10 //ukuranmaksimum queue void enqueue(int queue[], int *tail, intnilai); void dequeue(int queue[], int *head, int *tail, int *nilai); int main() { int queue[MAX]; int head, tail; int n, nilai; head = tail = (-1);

  16. do { do { cout<<"MasukkanNilaiElemen : "; cin>>nilai; enqueue(queue,&tail,nilai); cout<<endl; cout<<"Tekan 1 untukMelanjutkan"<<endl; cin>>n; } while (n == 1); cout<<endl; cout<<"Tekan 1 untukMenghapusSebuahElemen"<<endl; cin>>n; cout<<endl; cout<<"Tekan 1 untukMenghapusSebuahElemen"<<endl; cin>>n;

  17. while(n == 1) { dequeue(queue,&head,&tail,&nilai); cout<<"Nilaitelahdihapus : "<<nilai<<endl; cout<<endl; cout<<"Tekan 1 untukMenghapusSebuahElemen : "; cin>>n; } cout<<endl; cout<<"Tekan 1 untukMelanjutkan"<<endl; cin>>n; } while (n == 1); getch(); return 0; }

  18. void enqueue(int queue[], int *tail, intnilai) { if(*tail < MAX-1) { *tail = *tail + 1; queue[*tail] = nilai; } else { cout<<"Queue Penuh, enqueueTidakDapatDilakukan"<<endl; exit(0); } }

  19. void dequeue(int queue[], int *head, int *tail, int *nilai) { if(*head == *tail) { cout<<"Queue Kosong, dequeueTidakDapatDilakukan"<<endl; exit(0); } else { *head = *head + 1; *nilai = queue[*head]; } }

  20. Tampilan Program

More Related