praktikum 7 queue.docx

12
PRAKTIKUM 7 Queue 7.1 Tujuan Setelah melakukan praktikum ini siswa diharapkan mengerti : 1. Cara lain untuk merepresentasikan sekumpulan data menggunakan queue 2. Anggota/elemen struktur dari sebuah queue dengan array atau linked list 3. Cara penggunaan queue dengan array ataupun dengan linked list 4. Penelusuran simpul/pembacaan queue : FIFO (First In First Out) 7.2 Dasar Teori Misal Max Elemen = 6 belakang keluar masuk belakang keluar masuk belakang keluar masuk 1. Sesudah enqueuring 5,3 (belakang=2) 2. Sesudah enqueuring 8,9,2 (belakang=5) 5 3 5 3 8 9 2 8 9 2

Upload: farah-devi-isnanda

Post on 18-Dec-2014

81 views

Category:

Documents


4 download

DESCRIPTION

Queue

TRANSCRIPT

Page 1: PRAKTIKUM 7 Queue.docx

PRAKTIKUM 7Queue

2.1 Tujuan

Setelah melakukan praktikum ini siswa diharapkan mengerti :

1. Cara lain untuk merepresentasikan sekumpulan data menggunakan queue

2. Anggota/elemen struktur dari sebuah queue dengan array atau linked list

3. Cara penggunaan queue dengan array ataupun dengan linked list

4. Penelusuran simpul/pembacaan queue : FIFO (First In First Out)

2.2 Dasar Teori

Misal Max Elemen = 6

belakang

keluar masuk ①

belakang

keluar masuk ②

belakang

keluar masuk ③

1. Sesudah enqueuring 5,3 (belakang=2)2. Sesudah enqueuring 8,9,2 (belakang=5)3. Sesudah dequeuring 5,3 (belakang=3)

Depan belakang

keluar masuk ①

Depan = belakangkeluar masuk ②

belakang depankeluar masuk ③

1. Sesudah enqueuring 5,3 (depan=1,belakang=2)2. Sesudah enqueuing 8,9,2,1 (depan=belakang=6)3. Sesudah dequeuing 5,3 dan enqueuing 4(depan=6,belakang=1

35

29835

298

35

129835

12984

Page 2: PRAKTIKUM 7 Queue.docx

Definisi struktur Queue dengan array

#define MAXISI 10 //maksimum data isi

#define MAX 10 //maksimum data stack

//Definisi struktur stack

Struct antrian {

Int isi[MAXISI];

Int depan; //Posisi elemen I

Int belakang; //Posisi elemen terakhir

};

Struct antrian que[MAX]; //deklarasi var antrian

//Dengan array mungkin terjadi overflow, antrian telah penuh //sementara masih akan menambahkan elemen baru

Kondisi awal :

Belakang=0;

Depan=1; //Antrian kosong jika : Belakang<Depan

//Banyaknya elemen yang ada dalam antrian : Belakang-Depan + 1

Operasi enqueuing :

Void enque(struct antrian que,int penuh, int x)

{ if(que.belakang==MAX) que.belakang=1;

Else que.belakang=que.belakang+1;

If(que.depan==que.belakang)penuh=1;

Else que.isi[que.belakang]=x;

} }

Operasi Dequeuing :

Int deque(struct antrian que)

{

If(que.depan==que.belakang) return 0;

Else {

Temp=que.isi[que.depan];

If(depan==MAX) que.depan=1;

Else que.depan=que.depan+1;

Page 3: PRAKTIKUM 7 Queue.docx

Return(temp);

} }

//Definisi struktur queue dengan Linked list

Struct antrian

{

Int isi; struct antrian *next;

};

Struct antrian *data; //deklarasi var antrian

//Harus mempunyai 2 buah pointer untuk mencatat elemen //plg depan(kepala) dan elemen plg akhir (ekor)

Operasi enqueueing

Void enque(struct antrian *kepala, struct antrian *ekor, struct antrian *baru,int x)

{

If(ekor==NULL)

{ kepala = (struct antrian*)malloc(sizeof(struct antrian));

Kepala->isi=x; kepala->next=kepala;

Ekor=kepala;

}

Else { baru=(struct antrian*)malloc(sizeof(struct antrian));

Baru->isi=x; baru->next=kepala;

Ekor=baru; }

}

Operasi Dequeuing :

Void deque(struct antrian *kepala, struct antrian *hapus, int x) {

If(kepala==NULL)

{ kepala->next=kepala;

}

Else { hapus=kepala->next;

Kepala->next=hapus->next;

Free(hapus); }

}

Page 4: PRAKTIKUM 7 Queue.docx

1.1. Latihan Program1. Mendeklarasikan, memasukkan data, dan menampilkan pada stack menggunakan

array(=penelusuran LIFO)

Page 5: PRAKTIKUM 7 Queue.docx

Hasil Run :

2. Aplikasi queue simulasi tempat parker mwnggunakan single linked list . Persoalan :

(a) Tempat parkir mobil dibuat 1 baris, mobil bisa masuk lewat belakang dan keluar lewat depan

(b) Jika mobil yang berada paling depan yang akan dikeluarkan -> mobil bisa segera dikeluarkan

(c) Jika mobil yang akan dikeluarkan berada ditengah -> semua mobil didepannya harus dikeluarkan sementara dulu, setelah mobil yang dimaksud keluar ->maka mobil yang dikeluarkan sementara tadi akan masuk lagi dengan urutan tetap (push pop stack)

Page 6: PRAKTIKUM 7 Queue.docx
Page 7: PRAKTIKUM 7 Queue.docx

Hasil Run :Tampilan awal pilihan 1 memasukkan data plat nomer :

Tampilan pilihan 3 setelah memasukkan data plat nomer :

Page 8: PRAKTIKUM 7 Queue.docx

Tampilan pilihan 2 mengeluarkan mobil dari antrian :

Tampilan pilihan 4 :

3. Aplikasi program queue berprioritas dengan single linked list Pembahasan antrian di depan dinaggap semua elemen yang masuk

mempunyai prioritas yang sama, sementara dalam praktek yang digunakan adalah antrian berprioritas

Ketentuan antrian berprioritas :a. Elemen yang mempunyai prioritas lebih tinggi akan diproses lebih dulub. Dua elemen yang mempunyai prioritas yang sama akan dikerjakan sesuai

dengan urutan pada saat kedua elemen ini masuk dalam antrianc. Penerapan dengan single linked list, ketentuannya :o Setiap simpul terdiri dari 3 anggota, yaitu : informasi,angka prioritas,

dan bagian penyambung ke simpul lain .o Simpul X mendahului (terletak disebelah kiri) simpul Y, jika prioritas

X > prioritas Y atau bisa juga karena simpul X datang lebih dulu disbanding simpul Y .

Page 9: PRAKTIKUM 7 Queue.docx
Page 10: PRAKTIKUM 7 Queue.docx

Hasil Run :

1.2. Tugas Pemrograman

1. Untuk latihan program no 1,2 dan 3 buatlah bagan proses dari queue , untuk

setiap operasi enqueuing (insert) dan dequeuing (remove) pada representasi array

dan linked list. Jangan lupa memasukkan juga perubahan nilai index array dan

perubahan nilai pointernya .

2. Buatlah program simulasi penjadwalan cpu dengan queue berprioritas , parameter

yang dimasukkan :

Waktu kedatangan (arrival time)

Waktu proses

Nilai prioritas

Dapatkan total waktu yang dibutuhkan sampai selesai seluruh proses .