SlideShare a Scribd company logo
1 of 19
Download to read offline
Queue / Antrian
Akmal, S.Si, MT
Mata Kuliah : Struktur Data
Tujuan
 Mahasiswa dapat: menganalisis antrian
dan menyajikannya dengan operasi
InsertQueue dan DeleteQueue, baik
dengan array maupun dengan list berkait
dengan benar
Pokok Bahasan
 Pengertian Antrian
 Penyajian Antrian dengan Array dan List
 Operasi Insert Queue dan Delete Queue
 Antrian berprioritas
Pengertian Queue
 Queue adalah contoh lain dari ADT. Konsep kerja dari queue / Antrian
adalah FIFO ( “First-In, First-Out” ) atau Pertama Datang maka akan
menjadi yang Pertama Dilayani.
 InsertQueue dan DeleteQueue merupakan 2 buah operasi dasar yang
berhubungan dengan queue. InsertQueue menunjuk pada memasukkan
data pada akhir queue sedangkan DeleteQueue berarti mengeluarkan
elemen dari queue tersebut.
 Untuk mengingat bagaimana queue bekerja, ingatlah arti khusus dari
queue yaitu baris.
A B C D E FKeluar Masuk
Depan
(InsertQueue)(DeleteQueue)
Penyajian Antrian Menggunakan List Berkait
 Karena penyisipan selalu dari belakang (Insert Last), sementara
untuk menambah elemen selalu harus dicari dulu elemen terakhir
last (yang next nya bernilai NULL), sehingga algoritma ini menjadi
kurang efektif,
 Oleh sebab itu perlu dilakukan modifikasi / perubahan pada
struktur datanya dengan cara menambahkan suatu pointer Tail
sebagai pengenal Queue. Jadi ada 2 buah pengenal pada Antrian
yaitu Head dan Tail.
B C D
Head
A
Masuk
(InsertQueue)
Keluar
(DeleteQueue)
Deklarasi Queue
 Gambaran perubahan struktur data Queue dari linked list singly biasa adalah :
struct ElemenQueue {
char info;
ElemenQueue* next;
};
typedef ElemenQueue* pointer;
typedef pointer List;
struct Queue {
List Head;
List Tail;
};
Queue Q;
B C D
Q.Head
A
Masuk
(InsertQueue)
Keluar
(DeleteQueue)
Q.Tail
Insert Queue
Ada 2 kasus yang harus ditangani yaitu :
* Kasus Kosong
 Kasus ada isi
 Dalam hal ini tidak diperlukan lagi pencarian elemen terakhir karena elemen terakhir
selalu dicatat oleh Q.Tail
Q.Head Q.Tail
A
pBaru
Q.Head Q.Tail
A
pBaru
1 2
1. Q.Head=pBaru
2. Q.Tail=pBaru
B C
D
Q.Head
A
pBaru
Q.Tail
1
2
1. Q.Tail->next = pBaru
2. Q.Tail=pBaru
Fungsi insertQueue
void insertQueue( Queue& Q, pointer pBaru){
if (Q.Head==NULL && Q.Tail==NULL) { // kosong
Q.Head = PBaru;
Q.Tail = PBaru;
}
else { // ada isi
Q.Tail->next = PBaru;
Q.Tail = PBaru;
}
}
Delete Queue
Ada 3 kasus yang harus ditangani yaitu :
a. Queue kosong
Ciri dari Queue kosong adalah Q.Head==NULL dan Q.Tail==NULL
Tidak ada elemen yang dihapus
b. Queue dengan isi 1 elemen
List akan menjadi kosong dengan keadaan Head dan Tail bernilai NULL
Q.Head=NULL
Q.Tail = NULL
c. Queue dengan isi lebih dari 1 elemen
A B C
Q.Head
pHapus
1
3
2
Q.Tail
D
Fungsi DeleteQueue
void deleteQueue(Queue& Q, pointer& pHapus){
cout<<"Delete Queue"<<endl;
if (Q.Head==NULL && Q.Tail==NULL) { //kasus kosong
pHapus=NULL;
cout<<"List Queue kosong "<<endl;
}
else if (Q.Head->next==NULL) { // kasus isi 1 elemen
pHapus=Q.Head;
Q.Head=NULL;
Q.Tail=NULL;
}
else { // kasus > 1 elemen
pHapus=Q.Head;
Q.Head=Q.Head->next;
pHapus->next=NULL;
}
}
Penyajian Antrian Menggunakan Array
 Deklarasi array untuk mendefinisikan struktur data antrian adalah dengan
cara seperti berikut
 Ada 2 operasi dasar yang bisa dilakukan dengan menggunakan array yaitu
insertQueue dan deleteQueue.
 Untuk membuat sebuah Queue kosong adalah dengan membuat suatu
fungsi createQueue dengan memberikan indeks head=0 dan tail=-1;
const int maxElemen = 255;
struct Queue{
char isi[maxElemen];
int head; // depan
int tail; // belakang
};
void createQueue (Queue& Q){
Q.head = 0;
Q.tail = -1;
}
Illustrasi Antrian
 Penyisipan selalu di belakang dengan indexnya bertambah 1 dari keadaan
sebelumnya.
 Sedangkan penghapusan selalu di posisi depan. Selanjutnya semua elemen yang
tersisa digeser posisinya ke depan.
0
1
2
3
4
5
head=0
tail =-1
B
C
D
0
1
2
3
4
5
head=0
tail=3
0
1
2
3
4
5
tail=2
E
0
1
2
3
4
5
tail=3
A
B
C
D
D masuk
A keluar
Langsung di geser
E masuk
Antrian dengan menggeser elemen
C
D
B
Insert Queue / Penyisipan
 Kasus yang ditangani dalam insert Queue adalah jika kapasitas array
sudah penuh dan jika belum. Jika sudah penuh maka tidak bisa lagi
dilakukan penyisipan, tetapi jika belum maka index dari Tail bertambah 1
dan kemudian di posisi index yang baru elemen yang baru disisipkan.
 Fungsi untuk insert Queue adalah sbb:
void insertQueue(Queue& Q, char elemen) {
cout<<"Insert Queue (Antrian) "<<endl;
if (Q.tail==maxElemen-1){
cout<<"Antrian sudah penuh"<<endl;
}
else {
Q.tail=Q.tail + 1;
Q.isi[Q.tail] = elemen;
}
}
Delete Queue / Penghapusan
 Untuk melakukan proses delete Queue dengan cara sbb:
 Kasus yang ditangani ádalah kasus kosong dan ada isi. Untuk kasus kosong (dengan
ciri index head>tail, atau tail=-1) maka tidak ada yang dihapus, sementara untuk
kasus ada isi setelah data yang dihapus diamankan maka selanjutnya elemen yang
lain digeser ke depan satu persatu.
void deleteQueue(Queue& Q, char& elemenHapus){
cout<<"Delete Queue (Antrian) "<<endl;
if (Q.head>Q.tail){ // atau Q.tail=-1
cout<<"Antrian kosong"<<endl;
}
else {
elemenHapus= Q.isi[Q.head]; //Q.head=0
for (int i=0;i<Q.tail;i++){ // Geser ke depan
Q.isi[i]=Q.isi[i+1];
}
Q.tail=Q.tail-1;
}
}
Queue Circular
 Terlihat dalam fungsi sebelumnya ada ketidakefisienan ketika dilakukan proses
delete yaitu selalu terjadi proses pergeseran elemen. Untuk itu dilakukan pengaturan
penyimpanan array dengan bentuk circular (memutar) untuk menghindari ketidak
efisienan ketika proses delete tersebut. Dengan bentuk memutar ini maka elemen
pertama larik terletak berdekatan dengan elemen terakhir larik.
 Gambaran logic
D
E
F
0
1
2
3
4
5
Depan=3
Belakang=5
D
E
F
0
1
2
3
4
5
Depan=3
Belakang=0
F
0
1
2
3
4
5 Depan=5
Belakang=0
F
0
1
2
3
4
5 Depan=5
Belakang=3
G
G G
H
I
G masuk
D keluar
E keluar
H masuk
I masuk
Antrian secara circular (memutar)
Insert Queue Circular
 Kasus yang ditangani adalah kasus queue masih kosong dan kasus sudah ada isi.
Jika kosong maka indeks Q.Head=0 dan juga Q.Tail=0.
 Jika ada isi maka dilihat posisi Q.Tail nya. Jika posisi Q.Tail belum di akhir indeks
maka posisi indeks Q.tail akan bertambah 1, tetapi jika sudah di akhir indeks maka
penyisipan akan diletakkan diposisi 0.
if (Q.tail< maxElemen-1 ) {
Q.tail=Q.tail+1;
}
else {
Q.tail=0;
}
 Selanjutnya akan diperiksa apakah posisi baru yang akan ditempati masih kosong
atau sudah ada isi. Jika ada isi artinya antrian sudah penuh.
void createQueue(Queue& Q){
Q.head = -1;
Q.tail = -1;
}
Fungsi InsertQueue sirkular
void insertQueue(Queue& Q, char elemen) {
int posisiTemp;
cout<<"Insert Queue (Antrian) "<<endl;
if (Q.tail==-1) { // kosong pertama kali
Q.head=0;
Q.tail=0;
Q.isi[Q.tail] = elemen;
}
else {
posisiTemp=Q.tail; // amankan posisi Q.tail
if (Q.tail< maxElemen-1 ) { // proses circular
Q.tail=Q.tail+1;
}
else { // Q.tail>=maxElemen-1
Q.tail=0;
}
if (Q.tail==Q.head){
cout<<"Antrian sudah penuh"<<endl;
Q.tail=posisiTemp; // kembalikan posisi Q.tail
}
else {
Q.isi[Q.tail] = elemen;
}
}
}
Delete Queue Circular
void deleteQueue(Queue& Q, char& elemenHapus){
cout<<"Delete Queue (Antrian) "<<endl;
if (Q.head==-1 ) { //kosong
cout<<"Antrian kosong"<<endl;
}
else if (Q.head==Q.tail){ // isi 1 elemen
elemenHapus= Q.isi[Q.head];
Q.isi[Q.head]=' ';
Q.head=-1; // kembalikan ke kosong
Q.tail=-1;
}
else { // isi > 1 elemen
elemenHapus= Q.isi[Q.head];
Q.isi[Q.head]=' ';
if (Q.head<maxElemen-1) {
Q.head=Q.head+1;
}
else { // Q.head=maxElemen-1
Q.head=0;
}
}
}
Latihan dan Tugas
 Buatlah prosedur untuk menyisipkan elemen dalam Priority Queue / Antrian
berprioritas yang bisa terjadi diawal, ditengah atau dibelakang antrian. Priority
Queue banyak digunakan dalam S.O. misalnya untuk mencetak suatu job duluan
karena punya prioritas tinggi.
Struktur datanya adalah sbb :
type ElmtQueue : <Info : InfoType,
Prior : integer,
Next : address >
type Queue : < Head : address, Tail : address>
Procedure InsertPriorQueue (Input / Output Q : Queue, input P : address)
{I.S. Queue mungkin kosong }
{F.S. Priority Queue adalah penyisipan elemen P ke dalam antrian dengan aturan khusus
sbb :
 Elemen P dengan prioritas tertentu (10 - tertinggi, 1 - terendah) akan menyisip
sebelum elemen dengan prioritas yang lebih rendah darinya.
 Jika prioritas sama maka P akan menyisip tepat dibelakang deretan elemen yang
sama prioritasnya
 P akan menyisip dibelakang antrian jika prioritasnya paling kecil atau sama dengan
prioritas Tail

More Related Content

What's hot

Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur dataAsep Jaenudin
 
Matematika Diskrit - 09 graf - 06
Matematika Diskrit - 09 graf - 06Matematika Diskrit - 09 graf - 06
Matematika Diskrit - 09 graf - 06KuliahKita
 
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Fatma Qolbi
 
Metode numerik persamaan non linier
Metode numerik persamaan non linierMetode numerik persamaan non linier
Metode numerik persamaan non linierIzhan Nassuha
 
Proses Data Mining
Proses Data MiningProses Data Mining
Proses Data Miningdedidarwis
 
MAKALAH STACK (TUMPUKAN )
MAKALAH STACK (TUMPUKAN )MAKALAH STACK (TUMPUKAN )
MAKALAH STACK (TUMPUKAN )istiqlal
 
Penyederhanaan Fungsi Boolean
Penyederhanaan Fungsi BooleanPenyederhanaan Fungsi Boolean
Penyederhanaan Fungsi BooleanFahrul Razi
 
BAB 2 : KALIMAT BERKUANTOR
BAB 2 : KALIMAT BERKUANTORBAB 2 : KALIMAT BERKUANTOR
BAB 2 : KALIMAT BERKUANTORMustahal SSi
 
Pengertian field, record, table, file, data dan basis data lengkap pengerti...
Pengertian field, record, table, file, data dan basis data lengkap   pengerti...Pengertian field, record, table, file, data dan basis data lengkap   pengerti...
Pengertian field, record, table, file, data dan basis data lengkap pengerti...ym.ygrex@comp
 
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 OnlineLucha Kamala Putri
 
Bab 2 logika predikat ta 2019
Bab 2 logika predikat ta 2019Bab 2 logika predikat ta 2019
Bab 2 logika predikat ta 2019Sukma Puspitorini
 
Modul 3 pencarian heuristik
Modul 3   pencarian heuristikModul 3   pencarian heuristik
Modul 3 pencarian heuristikahmad haidaroh
 
Pertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanPertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanwillyhayon
 
Context Free Grammar 1 - Materi 6 - TBO
Context Free Grammar 1 - Materi 6 - TBOContext Free Grammar 1 - Materi 6 - TBO
Context Free Grammar 1 - Materi 6 - TBOahmad haidaroh
 

What's hot (20)

Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
Matematika Diskrit - 09 graf - 06
Matematika Diskrit - 09 graf - 06Matematika Diskrit - 09 graf - 06
Matematika Diskrit - 09 graf - 06
 
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
Matematika diskrit (dual graf, lintasan dan sirkuit euler, lintasan dan sirku...
 
Struktur Data Tree
Struktur Data TreeStruktur Data Tree
Struktur Data Tree
 
Power Point \ PPT - Memori Eksternal
Power Point \ PPT - Memori EksternalPower Point \ PPT - Memori Eksternal
Power Point \ PPT - Memori Eksternal
 
Metode numerik persamaan non linier
Metode numerik persamaan non linierMetode numerik persamaan non linier
Metode numerik persamaan non linier
 
Algoritma brute force
Algoritma brute forceAlgoritma brute force
Algoritma brute force
 
Proses Data Mining
Proses Data MiningProses Data Mining
Proses Data Mining
 
Queue
Queue Queue
Queue
 
MAKALAH STACK (TUMPUKAN )
MAKALAH STACK (TUMPUKAN )MAKALAH STACK (TUMPUKAN )
MAKALAH STACK (TUMPUKAN )
 
Penyederhanaan Fungsi Boolean
Penyederhanaan Fungsi BooleanPenyederhanaan Fungsi Boolean
Penyederhanaan Fungsi Boolean
 
BAB 2 : KALIMAT BERKUANTOR
BAB 2 : KALIMAT BERKUANTORBAB 2 : KALIMAT BERKUANTOR
BAB 2 : KALIMAT BERKUANTOR
 
Insertion sort
Insertion sortInsertion sort
Insertion sort
 
Pengertian field, record, table, file, data dan basis data lengkap pengerti...
Pengertian field, record, table, file, data dan basis data lengkap   pengerti...Pengertian field, record, table, file, data dan basis data lengkap   pengerti...
Pengertian field, record, table, file, data dan basis data lengkap pengerti...
 
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
 
Bab 2 logika predikat ta 2019
Bab 2 logika predikat ta 2019Bab 2 logika predikat ta 2019
Bab 2 logika predikat ta 2019
 
Modul 3 pencarian heuristik
Modul 3   pencarian heuristikModul 3   pencarian heuristik
Modul 3 pencarian heuristik
 
Pertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakanPertemuan 4-metode-pencarian-dan-pelacakan
Pertemuan 4-metode-pencarian-dan-pelacakan
 
Context Free Grammar 1 - Materi 6 - TBO
Context Free Grammar 1 - Materi 6 - TBOContext Free Grammar 1 - Materi 6 - TBO
Context Free Grammar 1 - Materi 6 - TBO
 

Similar to 7. Queue (Struktur Data)

Similar to 7. Queue (Struktur Data) (20)

Algoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrianAlgoritma dan Struktur Data - antrian
Algoritma dan Struktur Data - antrian
 
Algoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - AntrianAlgoritma dan Struktur Data - Antrian
Algoritma dan Struktur Data - Antrian
 
Algoritma dan Struktur Data - Queue
Algoritma dan Struktur Data - QueueAlgoritma dan Struktur Data - Queue
Algoritma dan Struktur Data - Queue
 
Queue
QueueQueue
Queue
 
Struktur data pertemuan 11
Struktur data pertemuan 11Struktur data pertemuan 11
Struktur data pertemuan 11
 
Pertemuan 6 revisijan2013-mhs
Pertemuan 6 revisijan2013-mhsPertemuan 6 revisijan2013-mhs
Pertemuan 6 revisijan2013-mhs
 
30707_SD6-Queue (Antrian).pdf
30707_SD6-Queue (Antrian).pdf30707_SD6-Queue (Antrian).pdf
30707_SD6-Queue (Antrian).pdf
 
Resume praktikum 7__queue
Resume praktikum 7__queueResume praktikum 7__queue
Resume praktikum 7__queue
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
Queue antrian
Queue antrian Queue antrian
Queue antrian
 
queue antrian
queue antrianqueue antrian
queue antrian
 
4 queue2
4 queue24 queue2
4 queue2
 
Queue
QueueQueue
Queue
 
Bab 4 queue (antrian)
Bab 4 queue (antrian)Bab 4 queue (antrian)
Bab 4 queue (antrian)
 
TPL0222_13_QUEUE.pdf
TPL0222_13_QUEUE.pdfTPL0222_13_QUEUE.pdf
TPL0222_13_QUEUE.pdf
 
Queue
QueueQueue
Queue
 
2894065
28940652894065
2894065
 
Bab 5 queue_antrian_
Bab 5 queue_antrian_Bab 5 queue_antrian_
Bab 5 queue_antrian_
 
Laporan praktikum modul ix
Laporan praktikum modul ixLaporan praktikum modul ix
Laporan praktikum modul ix
 
Kelompok 3
Kelompok 3Kelompok 3
Kelompok 3
 

More from Kelinci Coklat

Bab 7 integrasi numerik
Bab 7 integrasi numerikBab 7 integrasi numerik
Bab 7 integrasi numerikKelinci Coklat
 
Bab 5 interpolasi newton lanjutan
Bab 5 interpolasi newton lanjutanBab 5 interpolasi newton lanjutan
Bab 5 interpolasi newton lanjutanKelinci Coklat
 
Bab 4 sistem persamaan linear
Bab 4 sistem persamaan linearBab 4 sistem persamaan linear
Bab 4 sistem persamaan linearKelinci Coklat
 
Bab 3 penyelesaian persamaan tak linear
Bab 3 penyelesaian persamaan tak linearBab 3 penyelesaian persamaan tak linear
Bab 3 penyelesaian persamaan tak linearKelinci Coklat
 
Bab 2 perhitungan galat
Bab 2  perhitungan galatBab 2  perhitungan galat
Bab 2 perhitungan galatKelinci Coklat
 
Bab 8 persamaan differensial-biasa
Bab 8 persamaan differensial-biasaBab 8 persamaan differensial-biasa
Bab 8 persamaan differensial-biasaKelinci Coklat
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)Kelinci Coklat
 
8. Multi List (Struktur Data)
8. Multi List (Struktur Data)8. Multi List (Struktur Data)
8. Multi List (Struktur Data)Kelinci Coklat
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)Kelinci Coklat
 
3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait SinglyKelinci Coklat
 
4.2. Operasi Dasar Singly Linked List 2 (primitive list)
4.2. Operasi Dasar Singly Linked List  2 (primitive list)4.2. Operasi Dasar Singly Linked List  2 (primitive list)
4.2. Operasi Dasar Singly Linked List 2 (primitive list)Kelinci Coklat
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman TerstrukturKelinci Coklat
 
2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)Kelinci Coklat
 
Anuitas Biasa (Matematika Keuangan)
Anuitas Biasa (Matematika Keuangan)Anuitas Biasa (Matematika Keuangan)
Anuitas Biasa (Matematika Keuangan)Kelinci Coklat
 
Bunga Majemuk (Matematika Keuangan)
Bunga Majemuk (Matematika Keuangan)Bunga Majemuk (Matematika Keuangan)
Bunga Majemuk (Matematika Keuangan)Kelinci Coklat
 
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)Kelinci Coklat
 
Anuitas Tumbuh dan Variabel (Matematika Keuangan)
Anuitas Tumbuh dan Variabel (Matematika Keuangan)Anuitas Tumbuh dan Variabel (Matematika Keuangan)
Anuitas Tumbuh dan Variabel (Matematika Keuangan)Kelinci Coklat
 

More from Kelinci Coklat (20)

Bab 7 integrasi numerik
Bab 7 integrasi numerikBab 7 integrasi numerik
Bab 7 integrasi numerik
 
Bab 6 turunan numerik
Bab 6 turunan numerikBab 6 turunan numerik
Bab 6 turunan numerik
 
Bab 5 interpolasi newton lanjutan
Bab 5 interpolasi newton lanjutanBab 5 interpolasi newton lanjutan
Bab 5 interpolasi newton lanjutan
 
Bab 5 interpolasi
Bab 5 interpolasiBab 5 interpolasi
Bab 5 interpolasi
 
Bab 4 sistem persamaan linear
Bab 4 sistem persamaan linearBab 4 sistem persamaan linear
Bab 4 sistem persamaan linear
 
Bab 3 penyelesaian persamaan tak linear
Bab 3 penyelesaian persamaan tak linearBab 3 penyelesaian persamaan tak linear
Bab 3 penyelesaian persamaan tak linear
 
Bab 2 perhitungan galat
Bab 2  perhitungan galatBab 2  perhitungan galat
Bab 2 perhitungan galat
 
Bab 1 pendahuluan
Bab 1 pendahuluanBab 1 pendahuluan
Bab 1 pendahuluan
 
Bab 8 persamaan differensial-biasa
Bab 8 persamaan differensial-biasaBab 8 persamaan differensial-biasa
Bab 8 persamaan differensial-biasa
 
6. Stack (Struktur Data)
6. Stack (Struktur Data)6. Stack (Struktur Data)
6. Stack (Struktur Data)
 
8. Multi List (Struktur Data)
8. Multi List (Struktur Data)8. Multi List (Struktur Data)
8. Multi List (Struktur Data)
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 
3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly
 
4.2. Operasi Dasar Singly Linked List 2 (primitive list)
4.2. Operasi Dasar Singly Linked List  2 (primitive list)4.2. Operasi Dasar Singly Linked List  2 (primitive list)
4.2. Operasi Dasar Singly Linked List 2 (primitive list)
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
 
2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)2. Array of Record (Struktur Data)
2. Array of Record (Struktur Data)
 
Anuitas Biasa (Matematika Keuangan)
Anuitas Biasa (Matematika Keuangan)Anuitas Biasa (Matematika Keuangan)
Anuitas Biasa (Matematika Keuangan)
 
Bunga Majemuk (Matematika Keuangan)
Bunga Majemuk (Matematika Keuangan)Bunga Majemuk (Matematika Keuangan)
Bunga Majemuk (Matematika Keuangan)
 
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
Bunga Sederhana dan Tingkat Diskon (Matematika Keuangan)
 
Anuitas Tumbuh dan Variabel (Matematika Keuangan)
Anuitas Tumbuh dan Variabel (Matematika Keuangan)Anuitas Tumbuh dan Variabel (Matematika Keuangan)
Anuitas Tumbuh dan Variabel (Matematika Keuangan)
 

Recently uploaded

Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxKisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxFitriaSarmida1
 
Webinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdf
Webinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdfWebinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdf
Webinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdfTeukuEriSyahputra
 
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi TrigonometriSudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi TrigonometriFarhanPerdanaRamaden1
 
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
contoh-kisi-kisi-bahasa-inggris-kelas-9.docx
contoh-kisi-kisi-bahasa-inggris-kelas-9.docxcontoh-kisi-kisi-bahasa-inggris-kelas-9.docx
contoh-kisi-kisi-bahasa-inggris-kelas-9.docxdedyfirgiawan
 
Skenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru PenggerakSkenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru Penggerakputus34
 
sistem digesti dan ekskresi pada unggas ppt
sistem digesti dan ekskresi pada unggas pptsistem digesti dan ekskresi pada unggas ppt
sistem digesti dan ekskresi pada unggas ppthidayatn24
 
Aksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdf
Aksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdfAksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdf
Aksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdfsubki124
 
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...luqmanhakimkhairudin
 
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...Kanaidi ken
 
UAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdfUAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdfssuser29a952
 
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfAndiCoc
 
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMASBAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMASNursKitchen
 
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptxAKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptxnursariheldaseptiana
 
Penyuluhan DM Tipe II Kegiatan Prolanis.ppt
Penyuluhan DM Tipe II Kegiatan Prolanis.pptPenyuluhan DM Tipe II Kegiatan Prolanis.ppt
Penyuluhan DM Tipe II Kegiatan Prolanis.pptpalagoro17
 
MODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdfAndiCoc
 
konsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatankonsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatanSuzanDwiPutra
 
Materi Asuransi Kesehatan di Indonesia ppt
Materi Asuransi Kesehatan di Indonesia pptMateri Asuransi Kesehatan di Indonesia ppt
Materi Asuransi Kesehatan di Indonesia pptParulianGultom2
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfAndiCoc
 
Detik-Detik Proklamasi Indonesia pada Tahun 1945
Detik-Detik Proklamasi Indonesia pada Tahun 1945Detik-Detik Proklamasi Indonesia pada Tahun 1945
Detik-Detik Proklamasi Indonesia pada Tahun 1945nrein671
 

Recently uploaded (20)

Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docxKisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
Kisi kisi Ujian sekolah mata pelajaran IPA 2024.docx
 
Webinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdf
Webinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdfWebinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdf
Webinar 1_Pendidikan Berjenjang Pendidikan Inklusif.pdf
 
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi TrigonometriSudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
Sudut-sudut Berelasi Trigonometri - Sudut-sudut Berelasi Trigonometri
 
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR SENI MUSIK KELAS 6 KURIKULUM MERDEKA.pdf
 
contoh-kisi-kisi-bahasa-inggris-kelas-9.docx
contoh-kisi-kisi-bahasa-inggris-kelas-9.docxcontoh-kisi-kisi-bahasa-inggris-kelas-9.docx
contoh-kisi-kisi-bahasa-inggris-kelas-9.docx
 
Skenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru PenggerakSkenario Lokakarya 2 Pendidikan Guru Penggerak
Skenario Lokakarya 2 Pendidikan Guru Penggerak
 
sistem digesti dan ekskresi pada unggas ppt
sistem digesti dan ekskresi pada unggas pptsistem digesti dan ekskresi pada unggas ppt
sistem digesti dan ekskresi pada unggas ppt
 
Aksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdf
Aksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdfAksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdf
Aksi Nyata Menyebarkan Pemahaman Merdeka Belajar.pdf
 
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
Asimilasi Masyarakat Cina Dengan Orang Melayu di Kelantan (Cina Peranakan Kel...
 
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
PELAKSANAAN (dgn PT SBI) + Link2 Materi Pelatihan _"Teknik Perhitungan TKDN, ...
 
UAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdfUAS Matematika kelas IX 2024 HK_2024.pdf
UAS Matematika kelas IX 2024 HK_2024.pdf
 
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INGGRIS KELAS 6 KURIKULUM MERDEKA.pdf
 
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMASBAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
BAB 1 BEBATAN DAN BALUTAN DALAM PERTOLONGAN CEMAS
 
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptxAKSI NYATA  Numerasi  Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
AKSI NYATA Numerasi Meningkatkan Kompetensi Murid_compressed (1) (1).pptx
 
Penyuluhan DM Tipe II Kegiatan Prolanis.ppt
Penyuluhan DM Tipe II Kegiatan Prolanis.pptPenyuluhan DM Tipe II Kegiatan Prolanis.ppt
Penyuluhan DM Tipe II Kegiatan Prolanis.ppt
 
MODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdfMODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdf
MODUL AJAR BAHASA INDONESIA KELAS 5 KURIKULUM MERDEKA.pdf
 
konsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatankonsep pidato Bahaya Merokok bagi kesehatan
konsep pidato Bahaya Merokok bagi kesehatan
 
Materi Asuransi Kesehatan di Indonesia ppt
Materi Asuransi Kesehatan di Indonesia pptMateri Asuransi Kesehatan di Indonesia ppt
Materi Asuransi Kesehatan di Indonesia ppt
 
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdfMODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
MODUL AJAR IPAS KELAS 3 KURIKULUM MERDEKA.pdf
 
Detik-Detik Proklamasi Indonesia pada Tahun 1945
Detik-Detik Proklamasi Indonesia pada Tahun 1945Detik-Detik Proklamasi Indonesia pada Tahun 1945
Detik-Detik Proklamasi Indonesia pada Tahun 1945
 

7. Queue (Struktur Data)

  • 1. Queue / Antrian Akmal, S.Si, MT Mata Kuliah : Struktur Data
  • 2. Tujuan  Mahasiswa dapat: menganalisis antrian dan menyajikannya dengan operasi InsertQueue dan DeleteQueue, baik dengan array maupun dengan list berkait dengan benar
  • 3. Pokok Bahasan  Pengertian Antrian  Penyajian Antrian dengan Array dan List  Operasi Insert Queue dan Delete Queue  Antrian berprioritas
  • 4. Pengertian Queue  Queue adalah contoh lain dari ADT. Konsep kerja dari queue / Antrian adalah FIFO ( “First-In, First-Out” ) atau Pertama Datang maka akan menjadi yang Pertama Dilayani.  InsertQueue dan DeleteQueue merupakan 2 buah operasi dasar yang berhubungan dengan queue. InsertQueue menunjuk pada memasukkan data pada akhir queue sedangkan DeleteQueue berarti mengeluarkan elemen dari queue tersebut.  Untuk mengingat bagaimana queue bekerja, ingatlah arti khusus dari queue yaitu baris. A B C D E FKeluar Masuk Depan (InsertQueue)(DeleteQueue)
  • 5. Penyajian Antrian Menggunakan List Berkait  Karena penyisipan selalu dari belakang (Insert Last), sementara untuk menambah elemen selalu harus dicari dulu elemen terakhir last (yang next nya bernilai NULL), sehingga algoritma ini menjadi kurang efektif,  Oleh sebab itu perlu dilakukan modifikasi / perubahan pada struktur datanya dengan cara menambahkan suatu pointer Tail sebagai pengenal Queue. Jadi ada 2 buah pengenal pada Antrian yaitu Head dan Tail. B C D Head A Masuk (InsertQueue) Keluar (DeleteQueue)
  • 6. Deklarasi Queue  Gambaran perubahan struktur data Queue dari linked list singly biasa adalah : struct ElemenQueue { char info; ElemenQueue* next; }; typedef ElemenQueue* pointer; typedef pointer List; struct Queue { List Head; List Tail; }; Queue Q; B C D Q.Head A Masuk (InsertQueue) Keluar (DeleteQueue) Q.Tail
  • 7. Insert Queue Ada 2 kasus yang harus ditangani yaitu : * Kasus Kosong  Kasus ada isi  Dalam hal ini tidak diperlukan lagi pencarian elemen terakhir karena elemen terakhir selalu dicatat oleh Q.Tail Q.Head Q.Tail A pBaru Q.Head Q.Tail A pBaru 1 2 1. Q.Head=pBaru 2. Q.Tail=pBaru B C D Q.Head A pBaru Q.Tail 1 2 1. Q.Tail->next = pBaru 2. Q.Tail=pBaru
  • 8. Fungsi insertQueue void insertQueue( Queue& Q, pointer pBaru){ if (Q.Head==NULL && Q.Tail==NULL) { // kosong Q.Head = PBaru; Q.Tail = PBaru; } else { // ada isi Q.Tail->next = PBaru; Q.Tail = PBaru; } }
  • 9. Delete Queue Ada 3 kasus yang harus ditangani yaitu : a. Queue kosong Ciri dari Queue kosong adalah Q.Head==NULL dan Q.Tail==NULL Tidak ada elemen yang dihapus b. Queue dengan isi 1 elemen List akan menjadi kosong dengan keadaan Head dan Tail bernilai NULL Q.Head=NULL Q.Tail = NULL c. Queue dengan isi lebih dari 1 elemen A B C Q.Head pHapus 1 3 2 Q.Tail D
  • 10. Fungsi DeleteQueue void deleteQueue(Queue& Q, pointer& pHapus){ cout<<"Delete Queue"<<endl; if (Q.Head==NULL && Q.Tail==NULL) { //kasus kosong pHapus=NULL; cout<<"List Queue kosong "<<endl; } else if (Q.Head->next==NULL) { // kasus isi 1 elemen pHapus=Q.Head; Q.Head=NULL; Q.Tail=NULL; } else { // kasus > 1 elemen pHapus=Q.Head; Q.Head=Q.Head->next; pHapus->next=NULL; } }
  • 11. Penyajian Antrian Menggunakan Array  Deklarasi array untuk mendefinisikan struktur data antrian adalah dengan cara seperti berikut  Ada 2 operasi dasar yang bisa dilakukan dengan menggunakan array yaitu insertQueue dan deleteQueue.  Untuk membuat sebuah Queue kosong adalah dengan membuat suatu fungsi createQueue dengan memberikan indeks head=0 dan tail=-1; const int maxElemen = 255; struct Queue{ char isi[maxElemen]; int head; // depan int tail; // belakang }; void createQueue (Queue& Q){ Q.head = 0; Q.tail = -1; }
  • 12. Illustrasi Antrian  Penyisipan selalu di belakang dengan indexnya bertambah 1 dari keadaan sebelumnya.  Sedangkan penghapusan selalu di posisi depan. Selanjutnya semua elemen yang tersisa digeser posisinya ke depan. 0 1 2 3 4 5 head=0 tail =-1 B C D 0 1 2 3 4 5 head=0 tail=3 0 1 2 3 4 5 tail=2 E 0 1 2 3 4 5 tail=3 A B C D D masuk A keluar Langsung di geser E masuk Antrian dengan menggeser elemen C D B
  • 13. Insert Queue / Penyisipan  Kasus yang ditangani dalam insert Queue adalah jika kapasitas array sudah penuh dan jika belum. Jika sudah penuh maka tidak bisa lagi dilakukan penyisipan, tetapi jika belum maka index dari Tail bertambah 1 dan kemudian di posisi index yang baru elemen yang baru disisipkan.  Fungsi untuk insert Queue adalah sbb: void insertQueue(Queue& Q, char elemen) { cout<<"Insert Queue (Antrian) "<<endl; if (Q.tail==maxElemen-1){ cout<<"Antrian sudah penuh"<<endl; } else { Q.tail=Q.tail + 1; Q.isi[Q.tail] = elemen; } }
  • 14. Delete Queue / Penghapusan  Untuk melakukan proses delete Queue dengan cara sbb:  Kasus yang ditangani ádalah kasus kosong dan ada isi. Untuk kasus kosong (dengan ciri index head>tail, atau tail=-1) maka tidak ada yang dihapus, sementara untuk kasus ada isi setelah data yang dihapus diamankan maka selanjutnya elemen yang lain digeser ke depan satu persatu. void deleteQueue(Queue& Q, char& elemenHapus){ cout<<"Delete Queue (Antrian) "<<endl; if (Q.head>Q.tail){ // atau Q.tail=-1 cout<<"Antrian kosong"<<endl; } else { elemenHapus= Q.isi[Q.head]; //Q.head=0 for (int i=0;i<Q.tail;i++){ // Geser ke depan Q.isi[i]=Q.isi[i+1]; } Q.tail=Q.tail-1; } }
  • 15. Queue Circular  Terlihat dalam fungsi sebelumnya ada ketidakefisienan ketika dilakukan proses delete yaitu selalu terjadi proses pergeseran elemen. Untuk itu dilakukan pengaturan penyimpanan array dengan bentuk circular (memutar) untuk menghindari ketidak efisienan ketika proses delete tersebut. Dengan bentuk memutar ini maka elemen pertama larik terletak berdekatan dengan elemen terakhir larik.  Gambaran logic D E F 0 1 2 3 4 5 Depan=3 Belakang=5 D E F 0 1 2 3 4 5 Depan=3 Belakang=0 F 0 1 2 3 4 5 Depan=5 Belakang=0 F 0 1 2 3 4 5 Depan=5 Belakang=3 G G G H I G masuk D keluar E keluar H masuk I masuk Antrian secara circular (memutar)
  • 16. Insert Queue Circular  Kasus yang ditangani adalah kasus queue masih kosong dan kasus sudah ada isi. Jika kosong maka indeks Q.Head=0 dan juga Q.Tail=0.  Jika ada isi maka dilihat posisi Q.Tail nya. Jika posisi Q.Tail belum di akhir indeks maka posisi indeks Q.tail akan bertambah 1, tetapi jika sudah di akhir indeks maka penyisipan akan diletakkan diposisi 0. if (Q.tail< maxElemen-1 ) { Q.tail=Q.tail+1; } else { Q.tail=0; }  Selanjutnya akan diperiksa apakah posisi baru yang akan ditempati masih kosong atau sudah ada isi. Jika ada isi artinya antrian sudah penuh. void createQueue(Queue& Q){ Q.head = -1; Q.tail = -1; }
  • 17. Fungsi InsertQueue sirkular void insertQueue(Queue& Q, char elemen) { int posisiTemp; cout<<"Insert Queue (Antrian) "<<endl; if (Q.tail==-1) { // kosong pertama kali Q.head=0; Q.tail=0; Q.isi[Q.tail] = elemen; } else { posisiTemp=Q.tail; // amankan posisi Q.tail if (Q.tail< maxElemen-1 ) { // proses circular Q.tail=Q.tail+1; } else { // Q.tail>=maxElemen-1 Q.tail=0; } if (Q.tail==Q.head){ cout<<"Antrian sudah penuh"<<endl; Q.tail=posisiTemp; // kembalikan posisi Q.tail } else { Q.isi[Q.tail] = elemen; } } }
  • 18. Delete Queue Circular void deleteQueue(Queue& Q, char& elemenHapus){ cout<<"Delete Queue (Antrian) "<<endl; if (Q.head==-1 ) { //kosong cout<<"Antrian kosong"<<endl; } else if (Q.head==Q.tail){ // isi 1 elemen elemenHapus= Q.isi[Q.head]; Q.isi[Q.head]=' '; Q.head=-1; // kembalikan ke kosong Q.tail=-1; } else { // isi > 1 elemen elemenHapus= Q.isi[Q.head]; Q.isi[Q.head]=' '; if (Q.head<maxElemen-1) { Q.head=Q.head+1; } else { // Q.head=maxElemen-1 Q.head=0; } } }
  • 19. Latihan dan Tugas  Buatlah prosedur untuk menyisipkan elemen dalam Priority Queue / Antrian berprioritas yang bisa terjadi diawal, ditengah atau dibelakang antrian. Priority Queue banyak digunakan dalam S.O. misalnya untuk mencetak suatu job duluan karena punya prioritas tinggi. Struktur datanya adalah sbb : type ElmtQueue : <Info : InfoType, Prior : integer, Next : address > type Queue : < Head : address, Tail : address> Procedure InsertPriorQueue (Input / Output Q : Queue, input P : address) {I.S. Queue mungkin kosong } {F.S. Priority Queue adalah penyisipan elemen P ke dalam antrian dengan aturan khusus sbb :  Elemen P dengan prioritas tertentu (10 - tertinggi, 1 - terendah) akan menyisip sebelum elemen dengan prioritas yang lebih rendah darinya.  Jika prioritas sama maka P akan menyisip tepat dibelakang deretan elemen yang sama prioritasnya  P akan menyisip dibelakang antrian jika prioritasnya paling kecil atau sama dengan prioritas Tail