SlideShare a Scribd company logo
1 of 7
Download to read offline
1
BAB 5
QUEUE (ANTRIAN)
1. Tujuan Instruksional Umum
a. Mahasiswa mampu melakukan perancangan aplikasi menggunakan struktur
Queue (antrian)
b. Mahasiswa mampu melakukan analisis pada algoritma Queue yang dibuat
c. Mahasiswa mampu mengimplementasikan algoritma Queue pada sebuah
aplikasi secara tepat dan efisien
2. Tujuan Instruksional Khusus
a. Mahasiswa mampu menjelaskan mengenai Queue dan Dequeue
b. Mahasiswa mampu membuat dan mendeklarasikan Abstraksi Tipe Data Queue
c. Mahasiswa mampu menerapkan operasi push dan pop elemen pada algoritma
Queue
Pengertian Queue (Antrian)
Struktur data linear adalah kumpulan komponen-komponen yang tersusun
membentuk satu garis linear. Bila komponen-komponen ditambahkan (atau dikurangi),
maka struktur-struktur tersebut berkembang (atau menyusut). Queue merupakan
struktur data linear dimana penambahan komponen dilakukan di satu ujung, sementara
pengurangan dilakukan di ujung lain (yang satu lagi).
Queue (Antrian) adalah suatu kumpulan data yang penambahan elemennya
hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan
penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (disebut dengan
sisi depan atau front). DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian.
Antrian dapat dibuat dengan menggunakan: Liniear Array dan Circular Array.
Kalau tumpukan menggunakan prinsip LIFO (Last Input First Output), maka
pada antrian prinsip yang digunakan adalah FIFO (First Input First Output). Antrian
banyak dijumpai dalam kehidupan sehari-hari, misalnya dalam menonton bioskop
dimana melakukan antri dalam membeli tiket, mobil-mobil yang antri membeli karcis di
pintu jalan tol akan membentuk antrian, para calon mahasiswa yang mendaftarkan diri
untuk ikut ujian masuk perguruan tinggi akan membentuk antrian dan contoh-contoh
lain yang banyak dijumpai dalam kehidupan sehari-hari.
Contoh lain yang lebih relevan dalam bidang komputer adalah pemakaian sistem
komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai
yang menggunakan sistem tersebut secara serempak. Karena sistem ini biasanya
menggunakan sebuah prosesor dan sebuah memori utama, maka jika prosesor sedang
dipakai oleh seorang pemakai, pemakai-pemakai yang lain harus antri sampai gilirannya
tiba. Antrian ini mungkin tidak dilayani secara FIFO murni, tetapi didasarkan fase
tertentu. Antrian yang mengandung unsur prioritas dinamakan dengan antrian
berprioritas (priority queue).
QUEUE DENGAN LINIEAR ARRAY
Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di
ujung satunya. Sehingga membutuhkan variabel Head dan Tail dengan aturan sebagai
berikut:
1. Elemen pertama (HEAD) dan elemen terakhirnya (TAIL),
2
2. Aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut:
a. Penyisipan selalu dilakukan setelah elemen terakhir
b. Penghapusan selalu dilakukan pada elemen pertama
3. Satu elemen dengan yang lain dapat diakses melalui informasi NEXT
4. Struktur data ini banyak dipakai dalam informatika, misalnya untuk
merepresentasi :
a. antrian job yang harus ditangani oleh sistem operasi
b. antrian dalam dunia nyata.
Abstraksi Tipe Data Queue
Seperti halnya stack (tumpukan) spesifikasi queue (antrian) tersebutb dapat
diimplementasikan di level yang lebih rendah baik dengan array ataupun linear linked
list. Dalam implementasi array, konsep circular-array dapat diaplikasikan untuk
menghindari operasi penggeseran isi array saat dilakukan pop(). Dalam konsep
circular array, inkrementasi indeks array yang panjangnya n, selalu di modulo dengan
panjang array tsb. sehingga variabel indeks yang semula berharga n-1 jika diinkremen
akan "wrap-around" ke 0. Untuk mengetahui posisi ujung-ujung dari item data yang
disimpan dalam array, digunakan variabel indeks front (menunjuk ke posisi item
yang akan diambil berikutnya) dan rear (posisi elemen array berikutnya yang akan
ditempati). Suatu variabel count digunakan untuk mengetahui kasus khusus: apakah
queue kosong atau penuh. Jika penuh maka mekanisme memperbesar kapasitas queue
dapat diaplikasikan.
Dalam implementasi struktur data linier, maka bagian muka dari queue adalah
awal dari list (di-pop dengan delete-first) dan bagian belakang adalah akhir dari list (di-
push dengan insert-last). Mengingat operasi insert-last sering dilakukan maka
digunakan dua variabel referensi yang digunakan sebagai pointer: front untuk node
pertama dari list dan rear utuk node paling akhir.
Deklarasi Abatraksi Tipe Data Queue
Deklarasi Abstraksi tipe Data
Queue
#define MAX 8
typedef struct
{
int data[MAX];
int head;
int tail;
} Queue;
Queue antrian;
Gambar 1. Linier Array Queue
Operasi-operasi pada Queue
1. Membuat Queue Kosong
Untuk menciptakan dan menginisialisasi Queue, dengan cara membuat Head dan
Tail sama dengan NULL.
Deklarasi Membuat Queue
void Create()
{
antrian.head= NULL;
antrian.tail= NULL;
}
Gambar 2. Membuat Queue Kosong
3
2. Memeriksa Queue elemen kosong
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
Deklarasi Queue kosong
int IsEmpty()
{
if(antrian.tail==NULL)
return 1;
else
return 0;
}
3. Memeriksa Queue elemen penuh
Untuk mengecek apakah Antrian sudah penuh atau belum, dengan cara mengecek
nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C)
berarti sudah penuh.
Deklarasi Queue Penuh
int IsFull()
{
if(antrian.tail==MAX-1)
return 1;
else
return 0;
}
Gambar 3. Queue Penuh
4. Menambah elemen Queue (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. Gambar 4 memperlihatkan
penambahan elemen queue. Deklarasi Enqueue
void Enqueue(int data)
{
if(IsEmpty()==1)
{
antrian.head=antrian.tail=0;
antrian.data[antrian.tail]=data;
printf("%d masuk!",antrian.data[antrian.tail]);
} else
if(IsFull()==0)
{
antrian.tail++;
antrian.data[antrian.tail]=data;
printf("%d masuk!",antrian.data[antrian.tail]);
}
}
4
Gambar 4. Enqueue Data
5. Menghapus elemen Queue (Dequeue)
Digunakan untuk menghapus elemen terdepan/pertama dari antrian dengan cara
mengurangi counter Tail dan menggeser semua elemen antrian kedepan. Penggeseran
dilakukan dengan menggunakan looping. Gambar 5 memperlihatkan penghapusan
elemen queue. Deklarasi Dequeue
int Dequeue()
{
int i;
int e = antrian.data[antrian.head];
for(i=antrian.head;i<=antrian.tail-1;i++)
{
antrian.data[i] = antrian.data[i+1];
}
antrian.tail--;
return e;
}
Gambar 5. Dequeue Data
6. Membersihkan indeks Queue
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head
sama dengan NULL. Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus
arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai NULL sehingga
elemen-elemen Antrian tidak lagi terbaca.
Deklarasi Clear Queue
void Clear()
5
{
antrian.head=antrian.tail=NULL;
printf("data clear");
}
7. Menampilkan elemen Queue
Untuk menampilkan nilai-nilai elemen antrian dengan menggunakan looping dari
head sampai dengan tail.
Deklarasi menampilkan elemen Queue
void Tampil()
{
if(IsEmpty()==0)
{
for(int i=antrian.head;i<=antrian.tail;i++)
{
printf("%d ",antrian.data[i]);
}
}
else
printf("data kosong!n");
}
8. PUSH elemen Queue
Salah satu algoritma untuk proses memasukkan data (PUSH) adalah sebagai berikut:
1. Masukkan inputan data
2. Jika variabel i = MAX (nilai maksimum array), maka kerjakan langkah 3. Jika i
≠ MAX, maka kerjakan langkah 4.
3. Tampilkan “Queue sudah penuh”.
4. Selama i < MAX, maka i = i + 1 dan data [i] = data
Deklarasi PUSH elemen Queue
If(i == MAX)
Printf(“nQueue sudah penuhnn”);
Else
{
printf(“Masukkan data : “);
scanf(“%d”, &data[i]);
i = i + 1;
}
9. POP elemen Queue
Salah satu algoritma untuk proses mengeluarkan data (POP) adalah sebagai berikut:
1. Jika i = 0, maka tampilkan “Queue kosong” lalu kerjakan langkah 4. Jika i ≠ 0,
maka lakukan langkah 2.
2. Mulai hapus ← data[0] dan data[i-1] ← data[i]
3. i ← i – 1
4. data[0] ← NULL
Deklarasi POP elemen Queue
If(i == 0)
Printf(“Queue kosong”);
Else
{
hapus = data[0];
for(int j = 0; j < = i; j ++)
{
6
data[j] = antrian.data[j+1];
data[i]=NULL;
i--;
}
}
Manfaat Queue
a. digunakan sistem operasi untuk mengatur eksekusi task dalam suatu sistem
untuk mencapai perlakuan yang "adil" (seringkali queue disebut waiting line)
b. untuk mailbox dalam komunikasi antar proses
c. untuk buffer dalam mekanisme printspooler, komunikasi data
d. untuk simulasi dan modeling (misalnya simulasi sistem pengendali lalu lintas
udara) dalam memprediksi performansi
Contoh Soal
Buatlah program dalam bentuk menu untuk mengimplementasikan antrian.
Menu tersebut berisi memasukkan data, menghapus data, menampilkan data, dan keluar
#include<stdio.h>
#include<conio.h>
void main()
{
int i=0, data[8], x, hapus;
char pil;
do {
printf("1. Tambah Antriann");
printf("2. Hapus Antriann");
printf("3. Lihat Antriann");
printf("4. Keluarn");
printf("Silahkan masukkan pilihan anda... ");
pil=getche();
if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
printf("nnAnda salah mengetikkan inputan...n");
else
{
if(pil=='1') //PUSH
{
if(cek==20)
printf("nQueue Penuhnn");
else
{
printf("nMasukkan data: );scanf("%i",&x);
data[i]=x;
i++;
}
}
else
{
if(pil=='2') //POP
{
if(i==0)
printf("nQueue kosongnn");
else
{
hapus=data[0];
for(int j=0;j<i;j++)
data[j]=data[j+1];
data[i-1]=NULL;
i--;
printf("nNilai = %i terhapus.",hapus);
}
7
getch();
}
else
{
if(pil=='3') //CEK DATA
{
if(i==0)
printf("nQueue Kosong.nn");
else
{
printf("n");
for(int z=0;z<cek;z++)
{
printf(" | ");
printf("%i",data[z]);
printf(" | ");
}
}
getch();
}
}
}
}
}while(pil!='4');
}
Soal
Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen queue dengan
menggunakan fungsi di atas
Daftar Pustaka
1. _____. Struktur Data dengan Bahasa C. Team PPTI Universitas Kristen satya
Wacana
2. Andri Kristanto. 2003. Struktur Data dengan C++. Yogyakarta: Graha Ilmu
3. Antonius Rachmat C. Handout Struktur Data. Prodi Teknik Informatika
Universitas Kristen Duta Wacana
4. Santoso, P. I. 1992. Struktur data Turbo Pascal 6.0. Yogyakarta: Penerbit Andi
Offset
5. Setiawan, S. dan Wibowo, A.M. Handout Struktur Data dan Algoritma.
Fakultas Ilmu Komputer Universitas Indonesia
6. Titi. Handout Struktur data. Teknik Informatika Institut Teknologi Bandung

More Related Content

What's hot

90963869 latihan-soal-struktur-data-semester2
90963869 latihan-soal-struktur-data-semester290963869 latihan-soal-struktur-data-semester2
90963869 latihan-soal-struktur-data-semester2
Saybia Himma
 

What's hot (20)

Kecerdasan Buatan (AI)
Kecerdasan Buatan (AI)Kecerdasan Buatan (AI)
Kecerdasan Buatan (AI)
 
Contoh studykasus-2
Contoh studykasus-2Contoh studykasus-2
Contoh studykasus-2
 
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
Penggunaan SUBQUERY SQL SERVER (USING SUBQUERIES)
 
7 Metode Pencarian Data Array
7 Metode Pencarian Data Array7 Metode Pencarian Data Array
7 Metode Pencarian Data Array
 
Implementasi queue
Implementasi queueImplementasi queue
Implementasi queue
 
90963869 latihan-soal-struktur-data-semester2
90963869 latihan-soal-struktur-data-semester290963869 latihan-soal-struktur-data-semester2
90963869 latihan-soal-struktur-data-semester2
 
Makalah Perancangan ERD & LRS Pada Sistem Pemesanan Hotel
Makalah Perancangan ERD & LRS Pada Sistem Pemesanan HotelMakalah Perancangan ERD & LRS Pada Sistem Pemesanan Hotel
Makalah Perancangan ERD & LRS Pada Sistem Pemesanan Hotel
 
Tipe data abstract
Tipe data abstractTipe data abstract
Tipe data abstract
 
Pengertian dan Representasi Graph
Pengertian dan Representasi GraphPengertian dan Representasi Graph
Pengertian dan Representasi Graph
 
Latihan uts
Latihan utsLatihan uts
Latihan uts
 
Algoritma brute force
Algoritma brute forceAlgoritma brute force
Algoritma brute force
 
5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)5. Doubly Linked List (Struktur Data)
5. Doubly Linked List (Struktur Data)
 
Algoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - StackAlgoritma dan Struktur Data - Stack
Algoritma dan Struktur Data - Stack
 
Struktur Data Tree
Struktur Data TreeStruktur Data Tree
Struktur Data Tree
 
Linked List dalam Struktur Data
Linked List dalam Struktur DataLinked List dalam Struktur Data
Linked List dalam Struktur Data
 
Pertemuan 9 ok
Pertemuan 9 okPertemuan 9 ok
Pertemuan 9 ok
 
Algoritma dan Struktur Data - Queue
Algoritma dan Struktur Data - QueueAlgoritma dan Struktur Data - Queue
Algoritma dan Struktur Data - Queue
 
Array
ArrayArray
Array
 
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop OnlineERD Sistem Informasi Pemesanan Tiket Bioskop Online
ERD Sistem Informasi Pemesanan Tiket Bioskop Online
 
7. Queue (Struktur Data)
7. Queue (Struktur Data)7. Queue (Struktur Data)
7. Queue (Struktur Data)
 

Viewers also liked

Html programacao web
Html programacao webHtml programacao web
Html programacao web
alancarlos_rj
 
Rituales a la diosa Hécate
Rituales a la diosa HécateRituales a la diosa Hécate
Rituales a la diosa Hécate
alumnosdeamparo1
 
Makalah Or Antrian
Makalah Or  AntrianMakalah Or  Antrian
Makalah Or Antrian
guestb59a8c8
 

Viewers also liked (20)

Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
Algoritma dan pengetahuan terkait (menghitung, konversi, dll) Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
Algoritma dan pengetahuan terkait (menghitung, konversi, dll)
 
Materi Struktur data QUEUE
Materi Struktur data QUEUEMateri Struktur data QUEUE
Materi Struktur data QUEUE
 
2894065
28940652894065
2894065
 
Queue
QueueQueue
Queue
 
Queue as data_structure
Queue as data_structureQueue as data_structure
Queue as data_structure
 
Fungsi rekursif, queue, stack
Fungsi rekursif, queue, stackFungsi rekursif, queue, stack
Fungsi rekursif, queue, stack
 
Bab 5 queue_antrian_
Bab 5 queue_antrian_Bab 5 queue_antrian_
Bab 5 queue_antrian_
 
Html programacao web
Html programacao webHtml programacao web
Html programacao web
 
Penggunaan if dan teknik dasar bagian 2
Penggunaan if dan teknik dasar bagian 2Penggunaan if dan teknik dasar bagian 2
Penggunaan if dan teknik dasar bagian 2
 
Penggunaan if dan teknik dasar bagian 1
Penggunaan if dan teknik dasar bagian 1Penggunaan if dan teknik dasar bagian 1
Penggunaan if dan teknik dasar bagian 1
 
contoh program sederhana bahasa C
contoh program sederhana bahasa Ccontoh program sederhana bahasa C
contoh program sederhana bahasa C
 
Ruby on Redis
Ruby on RedisRuby on Redis
Ruby on Redis
 
Rituales a la diosa Hécate
Rituales a la diosa HécateRituales a la diosa Hécate
Rituales a la diosa Hécate
 
Resume praktikum 7__queue
Resume praktikum 7__queueResume praktikum 7__queue
Resume praktikum 7__queue
 
Ifc modul 7 (queue)
Ifc   modul 7 (queue)Ifc   modul 7 (queue)
Ifc modul 7 (queue)
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ix
 
Kelompok 3
Kelompok 3Kelompok 3
Kelompok 3
 
Algoritma dan Struktur Data
Algoritma dan Struktur DataAlgoritma dan Struktur Data
Algoritma dan Struktur Data
 
Makalah Or Antrian
Makalah Or  AntrianMakalah Or  Antrian
Makalah Or Antrian
 

Similar to Queue antrian

Struktur data pertemuan 11
Struktur data pertemuan 11Struktur data pertemuan 11
Struktur data pertemuan 11
ajonona
 
STACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknikSTACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknik
koamik4
 
Stack & queue by stanly maarende
Stack & queue by stanly maarendeStack & queue by stanly maarende
Stack & queue by stanly maarende
Sten Maarende
 

Similar to Queue antrian (20)

Queue
QueueQueue
Queue
 
Struktur data pertemuan 11
Struktur data pertemuan 11Struktur data pertemuan 11
Struktur data pertemuan 11
 
Queue
Queue Queue
Queue
 
Struktur data
Struktur dataStruktur data
Struktur data
 
TPL0222_13_QUEUE.pdf
TPL0222_13_QUEUE.pdfTPL0222_13_QUEUE.pdf
TPL0222_13_QUEUE.pdf
 
30707_SD6-Queue (Antrian).pdf
30707_SD6-Queue (Antrian).pdf30707_SD6-Queue (Antrian).pdf
30707_SD6-Queue (Antrian).pdf
 
Antrean (queue).pptx
Antrean (queue).pptxAntrean (queue).pptx
Antrean (queue).pptx
 
Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)Slide minggu 2 pertemuan 2 (struktur data1)
Slide minggu 2 pertemuan 2 (struktur data1)
 
Tugas kelompok 3
Tugas kelompok 3Tugas kelompok 3
Tugas kelompok 3
 
Laporan praktikum modul viii
Laporan praktikum modul viiiLaporan praktikum modul viii
Laporan praktikum modul viii
 
Ketoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptxKetoprak_PPT ADT Stack dan Queue.pptx
Ketoprak_PPT ADT Stack dan Queue.pptx
 
Chapter 4b queue
Chapter 4b   queueChapter 4b   queue
Chapter 4b queue
 
Tugas3
Tugas3Tugas3
Tugas3
 
4 queue2
4 queue24 queue2
4 queue2
 
Struktur data
Struktur dataStruktur data
Struktur data
 
STACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknikSTACK & QUEUE pert 5.pptx , stack program in teknik
STACK & QUEUE pert 5.pptx , stack program in teknik
 
Chapter 4 stack and queue
Chapter 4   stack and queueChapter 4   stack and queue
Chapter 4 stack and queue
 
Stack & queue by stanly maarende
Stack & queue by stanly maarendeStack & queue by stanly maarende
Stack & queue by stanly maarende
 
STACK .pdf
STACK .pdfSTACK .pdf
STACK .pdf
 
Tistrukdat4
Tistrukdat4Tistrukdat4
Tistrukdat4
 

More from muissyahril

Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2
muissyahril
 
Sd pertemuan 3 & 4
Sd   pertemuan 3 & 4Sd   pertemuan 3 & 4
Sd pertemuan 3 & 4
muissyahril
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6
muissyahril
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6
muissyahril
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
muissyahril
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
muissyahril
 
Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2
muissyahril
 

More from muissyahril (10)

Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2
 
Sd pertemuan 3 & 4
Sd   pertemuan 3 & 4Sd   pertemuan 3 & 4
Sd pertemuan 3 & 4
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Stack tumpukan
Stack tumpukan Stack tumpukan
Stack tumpukan
 
Sd pertemuan 5 & 6
Sd   pertemuan 5 & 6Sd   pertemuan 5 & 6
Sd pertemuan 5 & 6
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
 
Sd pertemuan 3 & 4 (edited)
Sd   pertemuan 3 & 4 (edited)Sd   pertemuan 3 & 4 (edited)
Sd pertemuan 3 & 4 (edited)
 
Sd pertemuan 1 & 2
Sd   pertemuan 1 & 2Sd   pertemuan 1 & 2
Sd pertemuan 1 & 2
 

Recently uploaded

KISI KISI PSAJ IPS KLS IX 2324.docskskkks
KISI KISI PSAJ IPS KLS IX 2324.docskskkksKISI KISI PSAJ IPS KLS IX 2324.docskskkks
KISI KISI PSAJ IPS KLS IX 2324.docskskkks
danzztzy405
 
Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...
Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...
Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...
Abortion pills in Riyadh +966572737505 get cytotec
 
Abortion pills in Jeddah+966543202731/ buy cytotec
Abortion pills in Jeddah+966543202731/ buy cytotecAbortion pills in Jeddah+966543202731/ buy cytotec
Abortion pills in Jeddah+966543202731/ buy cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 

Recently uploaded (11)

Salinan PPT TATA BAHASA Bahasa Indonesia
Salinan PPT TATA BAHASA Bahasa IndonesiaSalinan PPT TATA BAHASA Bahasa Indonesia
Salinan PPT TATA BAHASA Bahasa Indonesia
 
KISI KISI PSAJ IPS KLS IX 2324.docskskkks
KISI KISI PSAJ IPS KLS IX 2324.docskskkksKISI KISI PSAJ IPS KLS IX 2324.docskskkks
KISI KISI PSAJ IPS KLS IX 2324.docskskkks
 
ASUMSI DAN KARAKTERISTIK AKUNTANSI SYARIAH.pptx
ASUMSI DAN KARAKTERISTIK AKUNTANSI SYARIAH.pptxASUMSI DAN KARAKTERISTIK AKUNTANSI SYARIAH.pptx
ASUMSI DAN KARAKTERISTIK AKUNTANSI SYARIAH.pptx
 
Perlindungan Anak Dalam Hukum Perdata (2).pdf
Perlindungan Anak Dalam Hukum Perdata (2).pdfPerlindungan Anak Dalam Hukum Perdata (2).pdf
Perlindungan Anak Dalam Hukum Perdata (2).pdf
 
Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...
Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...
Abortion pills in Kuwait salmiyah [+966572737505 ] Get Cytotec in Kuwait city...
 
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptxUKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
UKURAN PENTYEBARAN DATA PPT KELOMPOK 2.pptx
 
Sistem operasi adalah program yang bertindak sebagai perantara antara user de...
Sistem operasi adalah program yang bertindak sebagai perantara antara user de...Sistem operasi adalah program yang bertindak sebagai perantara antara user de...
Sistem operasi adalah program yang bertindak sebagai perantara antara user de...
 
Contoh Algoritma Asosiasi pada data mining
Contoh Algoritma Asosiasi pada data miningContoh Algoritma Asosiasi pada data mining
Contoh Algoritma Asosiasi pada data mining
 
KONSEP DASAR ADVOKASI GIZI KEBIJAKAN PEMERINTAHAN
KONSEP DASAR ADVOKASI GIZI KEBIJAKAN PEMERINTAHANKONSEP DASAR ADVOKASI GIZI KEBIJAKAN PEMERINTAHAN
KONSEP DASAR ADVOKASI GIZI KEBIJAKAN PEMERINTAHAN
 
514034136-Tugas-Modul-4-5-Komputer-Dan-Media-Pembelajaran.pptx
514034136-Tugas-Modul-4-5-Komputer-Dan-Media-Pembelajaran.pptx514034136-Tugas-Modul-4-5-Komputer-Dan-Media-Pembelajaran.pptx
514034136-Tugas-Modul-4-5-Komputer-Dan-Media-Pembelajaran.pptx
 
Abortion pills in Jeddah+966543202731/ buy cytotec
Abortion pills in Jeddah+966543202731/ buy cytotecAbortion pills in Jeddah+966543202731/ buy cytotec
Abortion pills in Jeddah+966543202731/ buy cytotec
 

Queue antrian

  • 1. 1 BAB 5 QUEUE (ANTRIAN) 1. Tujuan Instruksional Umum a. Mahasiswa mampu melakukan perancangan aplikasi menggunakan struktur Queue (antrian) b. Mahasiswa mampu melakukan analisis pada algoritma Queue yang dibuat c. Mahasiswa mampu mengimplementasikan algoritma Queue pada sebuah aplikasi secara tepat dan efisien 2. Tujuan Instruksional Khusus a. Mahasiswa mampu menjelaskan mengenai Queue dan Dequeue b. Mahasiswa mampu membuat dan mendeklarasikan Abstraksi Tipe Data Queue c. Mahasiswa mampu menerapkan operasi push dan pop elemen pada algoritma Queue Pengertian Queue (Antrian) Struktur data linear adalah kumpulan komponen-komponen yang tersusun membentuk satu garis linear. Bila komponen-komponen ditambahkan (atau dikurangi), maka struktur-struktur tersebut berkembang (atau menyusut). Queue merupakan struktur data linear dimana penambahan komponen dilakukan di satu ujung, sementara pengurangan dilakukan di ujung lain (yang satu lagi). Queue (Antrian) adalah suatu kumpulan data yang penambahan elemennya hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear), dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain (disebut dengan sisi depan atau front). DEQUEUE adalah mengeluarkan satu elemen dari suatu Antrian. Antrian dapat dibuat dengan menggunakan: Liniear Array dan Circular Array. Kalau tumpukan menggunakan prinsip LIFO (Last Input First Output), maka pada antrian prinsip yang digunakan adalah FIFO (First Input First Output). Antrian banyak dijumpai dalam kehidupan sehari-hari, misalnya dalam menonton bioskop dimana melakukan antri dalam membeli tiket, mobil-mobil yang antri membeli karcis di pintu jalan tol akan membentuk antrian, para calon mahasiswa yang mendaftarkan diri untuk ikut ujian masuk perguruan tinggi akan membentuk antrian dan contoh-contoh lain yang banyak dijumpai dalam kehidupan sehari-hari. Contoh lain yang lebih relevan dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang menggunakan sistem tersebut secara serempak. Karena sistem ini biasanya menggunakan sebuah prosesor dan sebuah memori utama, maka jika prosesor sedang dipakai oleh seorang pemakai, pemakai-pemakai yang lain harus antri sampai gilirannya tiba. Antrian ini mungkin tidak dilayani secara FIFO murni, tetapi didasarkan fase tertentu. Antrian yang mengandung unsur prioritas dinamakan dengan antrian berprioritas (priority queue). QUEUE DENGAN LINIEAR ARRAY Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya. Sehingga membutuhkan variabel Head dan Tail dengan aturan sebagai berikut: 1. Elemen pertama (HEAD) dan elemen terakhirnya (TAIL),
  • 2. 2 2. Aturan penyisipan dan penghapusan elemennya didefinisikan sebagai berikut: a. Penyisipan selalu dilakukan setelah elemen terakhir b. Penghapusan selalu dilakukan pada elemen pertama 3. Satu elemen dengan yang lain dapat diakses melalui informasi NEXT 4. Struktur data ini banyak dipakai dalam informatika, misalnya untuk merepresentasi : a. antrian job yang harus ditangani oleh sistem operasi b. antrian dalam dunia nyata. Abstraksi Tipe Data Queue Seperti halnya stack (tumpukan) spesifikasi queue (antrian) tersebutb dapat diimplementasikan di level yang lebih rendah baik dengan array ataupun linear linked list. Dalam implementasi array, konsep circular-array dapat diaplikasikan untuk menghindari operasi penggeseran isi array saat dilakukan pop(). Dalam konsep circular array, inkrementasi indeks array yang panjangnya n, selalu di modulo dengan panjang array tsb. sehingga variabel indeks yang semula berharga n-1 jika diinkremen akan "wrap-around" ke 0. Untuk mengetahui posisi ujung-ujung dari item data yang disimpan dalam array, digunakan variabel indeks front (menunjuk ke posisi item yang akan diambil berikutnya) dan rear (posisi elemen array berikutnya yang akan ditempati). Suatu variabel count digunakan untuk mengetahui kasus khusus: apakah queue kosong atau penuh. Jika penuh maka mekanisme memperbesar kapasitas queue dapat diaplikasikan. Dalam implementasi struktur data linier, maka bagian muka dari queue adalah awal dari list (di-pop dengan delete-first) dan bagian belakang adalah akhir dari list (di- push dengan insert-last). Mengingat operasi insert-last sering dilakukan maka digunakan dua variabel referensi yang digunakan sebagai pointer: front untuk node pertama dari list dan rear utuk node paling akhir. Deklarasi Abatraksi Tipe Data Queue Deklarasi Abstraksi tipe Data Queue #define MAX 8 typedef struct { int data[MAX]; int head; int tail; } Queue; Queue antrian; Gambar 1. Linier Array Queue Operasi-operasi pada Queue 1. Membuat Queue Kosong Untuk menciptakan dan menginisialisasi Queue, dengan cara membuat Head dan Tail sama dengan NULL. Deklarasi Membuat Queue void Create() { antrian.head= NULL; antrian.tail= NULL; } Gambar 2. Membuat Queue Kosong
  • 3. 3 2. Memeriksa Queue elemen kosong 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 Deklarasi Queue kosong int IsEmpty() { if(antrian.tail==NULL) return 1; else return 0; } 3. Memeriksa Queue elemen penuh Untuk mengecek apakah Antrian sudah penuh atau belum, dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1 adalah batas elemen array pada C) berarti sudah penuh. Deklarasi Queue Penuh int IsFull() { if(antrian.tail==MAX-1) return 1; else return 0; } Gambar 3. Queue Penuh 4. Menambah elemen Queue (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. Gambar 4 memperlihatkan penambahan elemen queue. Deklarasi Enqueue void Enqueue(int data) { if(IsEmpty()==1) { antrian.head=antrian.tail=0; antrian.data[antrian.tail]=data; printf("%d masuk!",antrian.data[antrian.tail]); } else if(IsFull()==0) { antrian.tail++; antrian.data[antrian.tail]=data; printf("%d masuk!",antrian.data[antrian.tail]); } }
  • 4. 4 Gambar 4. Enqueue Data 5. Menghapus elemen Queue (Dequeue) Digunakan untuk menghapus elemen terdepan/pertama dari antrian dengan cara mengurangi counter Tail dan menggeser semua elemen antrian kedepan. Penggeseran dilakukan dengan menggunakan looping. Gambar 5 memperlihatkan penghapusan elemen queue. Deklarasi Dequeue int Dequeue() { int i; int e = antrian.data[antrian.head]; for(i=antrian.head;i<=antrian.tail-1;i++) { antrian.data[i] = antrian.data[i+1]; } antrian.tail--; return e; } Gambar 5. Dequeue Data 6. Membersihkan indeks Queue Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head sama dengan NULL. Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya, namun hanya mengeset indeks pengaksesan-nya ke nilai NULL sehingga elemen-elemen Antrian tidak lagi terbaca. Deklarasi Clear Queue void Clear()
  • 5. 5 { antrian.head=antrian.tail=NULL; printf("data clear"); } 7. Menampilkan elemen Queue Untuk menampilkan nilai-nilai elemen antrian dengan menggunakan looping dari head sampai dengan tail. Deklarasi menampilkan elemen Queue void Tampil() { if(IsEmpty()==0) { for(int i=antrian.head;i<=antrian.tail;i++) { printf("%d ",antrian.data[i]); } } else printf("data kosong!n"); } 8. PUSH elemen Queue Salah satu algoritma untuk proses memasukkan data (PUSH) adalah sebagai berikut: 1. Masukkan inputan data 2. Jika variabel i = MAX (nilai maksimum array), maka kerjakan langkah 3. Jika i ≠ MAX, maka kerjakan langkah 4. 3. Tampilkan “Queue sudah penuh”. 4. Selama i < MAX, maka i = i + 1 dan data [i] = data Deklarasi PUSH elemen Queue If(i == MAX) Printf(“nQueue sudah penuhnn”); Else { printf(“Masukkan data : “); scanf(“%d”, &data[i]); i = i + 1; } 9. POP elemen Queue Salah satu algoritma untuk proses mengeluarkan data (POP) adalah sebagai berikut: 1. Jika i = 0, maka tampilkan “Queue kosong” lalu kerjakan langkah 4. Jika i ≠ 0, maka lakukan langkah 2. 2. Mulai hapus ← data[0] dan data[i-1] ← data[i] 3. i ← i – 1 4. data[0] ← NULL Deklarasi POP elemen Queue If(i == 0) Printf(“Queue kosong”); Else { hapus = data[0]; for(int j = 0; j < = i; j ++) {
  • 6. 6 data[j] = antrian.data[j+1]; data[i]=NULL; i--; } } Manfaat Queue a. digunakan sistem operasi untuk mengatur eksekusi task dalam suatu sistem untuk mencapai perlakuan yang "adil" (seringkali queue disebut waiting line) b. untuk mailbox dalam komunikasi antar proses c. untuk buffer dalam mekanisme printspooler, komunikasi data d. untuk simulasi dan modeling (misalnya simulasi sistem pengendali lalu lintas udara) dalam memprediksi performansi Contoh Soal Buatlah program dalam bentuk menu untuk mengimplementasikan antrian. Menu tersebut berisi memasukkan data, menghapus data, menampilkan data, dan keluar #include<stdio.h> #include<conio.h> void main() { int i=0, data[8], x, hapus; char pil; do { printf("1. Tambah Antriann"); printf("2. Hapus Antriann"); printf("3. Lihat Antriann"); printf("4. Keluarn"); printf("Silahkan masukkan pilihan anda... "); pil=getche(); if(pil!='1' && pil !='2' && pil !='3' && pil!='4' ) printf("nnAnda salah mengetikkan inputan...n"); else { if(pil=='1') //PUSH { if(cek==20) printf("nQueue Penuhnn"); else { printf("nMasukkan data: );scanf("%i",&x); data[i]=x; i++; } } else { if(pil=='2') //POP { if(i==0) printf("nQueue kosongnn"); else { hapus=data[0]; for(int j=0;j<i;j++) data[j]=data[j+1]; data[i-1]=NULL; i--; printf("nNilai = %i terhapus.",hapus); }
  • 7. 7 getch(); } else { if(pil=='3') //CEK DATA { if(i==0) printf("nQueue Kosong.nn"); else { printf("n"); for(int z=0;z<cek;z++) { printf(" | "); printf("%i",data[z]); printf(" | "); } } getch(); } } } } }while(pil!='4'); } Soal Carilah nilai total, rata-rata, terbesar dan terkecil dari elemen queue dengan menggunakan fungsi di atas Daftar Pustaka 1. _____. Struktur Data dengan Bahasa C. Team PPTI Universitas Kristen satya Wacana 2. Andri Kristanto. 2003. Struktur Data dengan C++. Yogyakarta: Graha Ilmu 3. Antonius Rachmat C. Handout Struktur Data. Prodi Teknik Informatika Universitas Kristen Duta Wacana 4. Santoso, P. I. 1992. Struktur data Turbo Pascal 6.0. Yogyakarta: Penerbit Andi Offset 5. Setiawan, S. dan Wibowo, A.M. Handout Struktur Data dan Algoritma. Fakultas Ilmu Komputer Universitas Indonesia 6. Titi. Handout Struktur data. Teknik Informatika Institut Teknologi Bandung