MODUL PRAKTIKUM STRUKTUR DATA QUEUE ANTR
MODUL PRAKTIKUM
STRUKTUR DATA
QUEUE (ANTRIAN)
Oleh :
Muhammad Riza Hilmi, ST.
[email protected]
STMIK STIKOM BALI
2012
BAB III
QUEUE (ANTRIAN)
1.
PENGERTIAN
a. Queue
Queue (antrian) adalah salah satu list linier dari struktur data yang beroperasi dengan cara
First In First Out (FIFO) yaitu elemen pertama yang masuk merupakan elemen yang
pertama keluar. Untuk penyisipan (INSERT) hanya dapat dilakukan pada satu sisi yaitu sisi
belakang (REAR), sedangkan untuk penghapusan (REMOVE) pada sisi depan (FRONT) dari
list.
hapus elemen
1
2
……..
ke – n
front
sisip elemen
rear
Akan terjadi ketidakefisienan bila penambahan elemen sudah pada posisi index N (Rear =
N) maka tidak dapat lagi dilakukan penambahan elemen, sedangkan dilokasi memori yang
lain (nilai di bawah N) masih terdapat memori array yang kosong. Untuk mengatasi hal
tersebut maka kita bayangkan bahwa memori dari queue tersebut berbentuk melingkar
dimana kedua ujungnya saling bertemu atau disebut juga dengan Circular Queue.
b. Circular Queue
Front
Q(m)
Q(2)
Q(1)
...
Q(f)
Q(f+1)
...
...
Q(r)
Q(1) Q(2)
......
Q(f)
Q(f+1)
Rear
......
Q(r)
......
Q(m)
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
2.
DEKLARASI
Bentuk deklarasi queue terdiri dari masing-masing fungsi :
a. AWAL(Inisialisasi)
Dituliskan dalam bentuk fungsi :
F = 0;
R = 0;
void AWAL ()
{
F = 0;
R = 0;
}
b. INSERT(Sisip, Masuk, Simpan, Tulis)
void INSERT()
{
R = R + 1;
Q[R] = X;
}
R maju dulu satu langkah (R=R+1), Kemudian isi ditempat yang
ditunjuk oleh R, atau Q[R] = X.
c. DELETE(Hapus, Keluar, Ambil atau Dilayani, Baca)
void DELETE()
{
X= Q[F];
F = F + 1;
}
Ambil dulu yang ditunjuk oleh F, simpan di X Kemudian F maju
satu langkah (F = F+1).
d. RESET(Kembali ke keadaan awal)
void RESET()
{
F = 0;
R = 0;
}
Kembali ke keadaan dimana F = 0, dan R = 0.
3. OPERASI-OPERASI
Adapun operasi pada antrian diantaranya adalah :
a. Create
membuat antrian baru atau menginisialisasi/mendefinisikan antrian yang
kosong.
b. IsEmpty mengecek apakah antrian dalam kedaan kosong atau tidak.
c. IsFull
mengecek apakah antrian sudah penuh atau belum.
d. Enqueue menambah elemen baru pada antrian yang berisi info baru (IB) pada posisi
paling belakang (REAR).
Syarat awal : Queue tidak penuh (jika penuh akan terjadi overflow).
Syarat akhir : Queue bertambah satu elemen.
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
e. Dequeue menghapus elemen dari antrian yang berada pada posisi paling depan
(FRONT) dan infonya disimpan dalam info dequeue (ID)
Syarat awal : Queue tidak kosong (jika kosong akan terjadi underflow).
Syarat akhir : Queue berkurang satu elemen.
f. Clear
g. Tampil
4.
menghapus elemen-elemen Antrian.
menampilkan nilai-nilai elemen Antrian.
ILUSTRASI
a. QUEUE
CREATE (Q)
Front
:0
Rear
:0
.....
1
2
3
4
INSERT (INSERT(INSERT(INSERT(A),B),C),D)
Front
:1
A
B
C
D
Rear
:4
1
2
3
4
REMOVE(Q)
Front
:2
Rear
:4
1
INSERT(INSERT(E),F)
Front
:2
Rear
:6
1
6
5
6
C
D
2
3
4
5
6
B
C
D
E
F
2
3
4
5
6
C
D
E
F
3
4
5
6
2
7
.....
N
.....
B
REMOVE(Q)
Front
:3
Rear
:6
1
5
7
.....
N
.....
7
.....
N
.....
7
.....
N
.....
7
.....
N
Dapat dilihat bahwa setiap terjadi penghapusan elemen pada queue nilai (index) dari Front
bertambah satu (1) ; dapat ditulis FRONT := FRONT+1. Begitu pula bila terjadi penambahan
elemen pada queue nilai (index) Rear bertambah satu (1) ; dapat ditulis REAR := REAR + 1.
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
b. CIRCULAR QUEUE
Suatu queue akan menempati lokasi sebanyak 5 array memori, dengan urutan operasi
sebagai berikut :
1. Create(Q)
F=0
R=0
1
2. Insert A, B, C
F=1
R=3
3. Remove (Q)
2
A
3
4
5
B
C
F=2
R=3
B
C
4. Insert D dan E
F=2
R=5
B
C
5. Remove(Remove(Q))
F=4
R=5
6. Insert F
F=4
R=1
F
7. Remove(Q)
F=5
R=1
F
8. Insert G, H, K
F=5
R=4
F
G
H
K
E
9. Insert L
(OVERFLOW)
F=5
R=4
F
G
H
K
E
10. Remove(Remove(Q))
F=2
R=4
G
H
K
11. Insert L
F=2
R=5
G
H
K
12. Remove(Remove
(Remove(Remove(Q))))
F=0
R=0
13. Remove(Q)
(UNDERFLOW)
F=0
R=0
D
E
D
E
D
E
E
L
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
5.
LATIHAN
Latihan 1. Program Implemantasi Queue Dalam Array (QueueArray.cpp)
#include
#include
#include
#include
#define max 50
#define True 1
#define False 0
struct typequeue{int belakang;
int elemen[max]; };
struct typequeue queue;
void buatqueue();
void cetakqueue();
void enqueue(int IB);
void dequeue();
int queuekosong();
int queuepenuh();
int main()
{ buatqueue();
enqueue(12);
enqueue(78);
enqueue(5);
enqueue(34);
cetakqueue();
cout
STRUKTUR DATA
QUEUE (ANTRIAN)
Oleh :
Muhammad Riza Hilmi, ST.
[email protected]
STMIK STIKOM BALI
2012
BAB III
QUEUE (ANTRIAN)
1.
PENGERTIAN
a. Queue
Queue (antrian) adalah salah satu list linier dari struktur data yang beroperasi dengan cara
First In First Out (FIFO) yaitu elemen pertama yang masuk merupakan elemen yang
pertama keluar. Untuk penyisipan (INSERT) hanya dapat dilakukan pada satu sisi yaitu sisi
belakang (REAR), sedangkan untuk penghapusan (REMOVE) pada sisi depan (FRONT) dari
list.
hapus elemen
1
2
……..
ke – n
front
sisip elemen
rear
Akan terjadi ketidakefisienan bila penambahan elemen sudah pada posisi index N (Rear =
N) maka tidak dapat lagi dilakukan penambahan elemen, sedangkan dilokasi memori yang
lain (nilai di bawah N) masih terdapat memori array yang kosong. Untuk mengatasi hal
tersebut maka kita bayangkan bahwa memori dari queue tersebut berbentuk melingkar
dimana kedua ujungnya saling bertemu atau disebut juga dengan Circular Queue.
b. Circular Queue
Front
Q(m)
Q(2)
Q(1)
...
Q(f)
Q(f+1)
...
...
Q(r)
Q(1) Q(2)
......
Q(f)
Q(f+1)
Rear
......
Q(r)
......
Q(m)
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
2.
DEKLARASI
Bentuk deklarasi queue terdiri dari masing-masing fungsi :
a. AWAL(Inisialisasi)
Dituliskan dalam bentuk fungsi :
F = 0;
R = 0;
void AWAL ()
{
F = 0;
R = 0;
}
b. INSERT(Sisip, Masuk, Simpan, Tulis)
void INSERT()
{
R = R + 1;
Q[R] = X;
}
R maju dulu satu langkah (R=R+1), Kemudian isi ditempat yang
ditunjuk oleh R, atau Q[R] = X.
c. DELETE(Hapus, Keluar, Ambil atau Dilayani, Baca)
void DELETE()
{
X= Q[F];
F = F + 1;
}
Ambil dulu yang ditunjuk oleh F, simpan di X Kemudian F maju
satu langkah (F = F+1).
d. RESET(Kembali ke keadaan awal)
void RESET()
{
F = 0;
R = 0;
}
Kembali ke keadaan dimana F = 0, dan R = 0.
3. OPERASI-OPERASI
Adapun operasi pada antrian diantaranya adalah :
a. Create
membuat antrian baru atau menginisialisasi/mendefinisikan antrian yang
kosong.
b. IsEmpty mengecek apakah antrian dalam kedaan kosong atau tidak.
c. IsFull
mengecek apakah antrian sudah penuh atau belum.
d. Enqueue menambah elemen baru pada antrian yang berisi info baru (IB) pada posisi
paling belakang (REAR).
Syarat awal : Queue tidak penuh (jika penuh akan terjadi overflow).
Syarat akhir : Queue bertambah satu elemen.
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
e. Dequeue menghapus elemen dari antrian yang berada pada posisi paling depan
(FRONT) dan infonya disimpan dalam info dequeue (ID)
Syarat awal : Queue tidak kosong (jika kosong akan terjadi underflow).
Syarat akhir : Queue berkurang satu elemen.
f. Clear
g. Tampil
4.
menghapus elemen-elemen Antrian.
menampilkan nilai-nilai elemen Antrian.
ILUSTRASI
a. QUEUE
CREATE (Q)
Front
:0
Rear
:0
.....
1
2
3
4
INSERT (INSERT(INSERT(INSERT(A),B),C),D)
Front
:1
A
B
C
D
Rear
:4
1
2
3
4
REMOVE(Q)
Front
:2
Rear
:4
1
INSERT(INSERT(E),F)
Front
:2
Rear
:6
1
6
5
6
C
D
2
3
4
5
6
B
C
D
E
F
2
3
4
5
6
C
D
E
F
3
4
5
6
2
7
.....
N
.....
B
REMOVE(Q)
Front
:3
Rear
:6
1
5
7
.....
N
.....
7
.....
N
.....
7
.....
N
.....
7
.....
N
Dapat dilihat bahwa setiap terjadi penghapusan elemen pada queue nilai (index) dari Front
bertambah satu (1) ; dapat ditulis FRONT := FRONT+1. Begitu pula bila terjadi penambahan
elemen pada queue nilai (index) Rear bertambah satu (1) ; dapat ditulis REAR := REAR + 1.
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
b. CIRCULAR QUEUE
Suatu queue akan menempati lokasi sebanyak 5 array memori, dengan urutan operasi
sebagai berikut :
1. Create(Q)
F=0
R=0
1
2. Insert A, B, C
F=1
R=3
3. Remove (Q)
2
A
3
4
5
B
C
F=2
R=3
B
C
4. Insert D dan E
F=2
R=5
B
C
5. Remove(Remove(Q))
F=4
R=5
6. Insert F
F=4
R=1
F
7. Remove(Q)
F=5
R=1
F
8. Insert G, H, K
F=5
R=4
F
G
H
K
E
9. Insert L
(OVERFLOW)
F=5
R=4
F
G
H
K
E
10. Remove(Remove(Q))
F=2
R=4
G
H
K
11. Insert L
F=2
R=5
G
H
K
12. Remove(Remove
(Remove(Remove(Q))))
F=0
R=0
13. Remove(Q)
(UNDERFLOW)
F=0
R=0
D
E
D
E
D
E
E
L
Praktikum Struktur Data - STMIK STIKOM BALI
Muhammad Riza Hilmi, ST. - [email protected]
5.
LATIHAN
Latihan 1. Program Implemantasi Queue Dalam Array (QueueArray.cpp)
#include
#include
#include
#include
#define max 50
#define True 1
#define False 0
struct typequeue{int belakang;
int elemen[max]; };
struct typequeue queue;
void buatqueue();
void cetakqueue();
void enqueue(int IB);
void dequeue();
int queuekosong();
int queuepenuh();
int main()
{ buatqueue();
enqueue(12);
enqueue(78);
enqueue(5);
enqueue(34);
cetakqueue();
cout