05-Que-Deque - Google Drive

Download Report

Transcript 05-Que-Deque - Google Drive

6.3 & 7.3
NESTED LOOP
1
Double Ended QUEUE
( ANTRIAN dengan Ujung Ganda )
2
3.1
2. 23
PENDAHULUAN
A deque (Double-ended queue) is a linear list in
which insertion and deletions are made to or
from either end of the structure
Jean-Paul Tremblay;
“An Introduction To Data Structures
with Applications”; McGraw-Hill, 1985
INSERT
KIRI
DELETE
KIRI
Tabung
INSERT
KANAN
DELETE
KANAN
3
3.1
2. 23
PENDAHULUAN
A deque (Double-ended queue) is a linear list in
which insertion and deletions are made to or
from either end of the structure
Jean-Paul Tremblay;
“An Introduction To Data Structures
with Applications”; McGraw-Hill, 1985
Kalung manik
4
2. 23
3.2. REPRESENTASI DOUBLE ENDED QUEUE
dalam array satu dimensi
3.2.1. Ilustrasi
Q[ ]
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
x x x
L
6
7
8
n-1
9
INSERT
KANAN
DELETE
KANAN
R
5
2. 23
Q[ ]
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
INSERT
KANAN
DELETE
KANAN
R
Proses INSERT dan DELETE
1. INSERT KANAN, Masuk dari kanan
2. INSERT KIRI, Masuk dari kiri
3. DELETE KANAN, keluar dari kanan
4. DELETE KIRI, keluar dari kiri
6
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
Kalau ada perintah masuk dari kanan,
maka akan masuk di elemen nomor :
dan
indeks R akan menunjuk elemen nomor :
?
?
7
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
2. 23
INSERT
KANAN
DELETE
KANAN
R
10
X
R maju satu langkah : R = R + 1;
8
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12 10
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
Isi ditempat yang ditunjuk oleh R : Q[R] = X;
9
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12 10
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
Sehingga :
Kalau ada perintah masuk dari kanan,
maka akan masuk di elemen nomor :
dan
indeks R akan menunjuk elemen nomor :
Algoritma : R = R + 1;
Q[R] = X;
6
6
10
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
Kalau ada perintah masuk dari kiri,
maka akan masuk di elemen nomor :
dan
indeks L akan menunjuk elemen nomor :
?
?
11
INSERT
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
DELETE
KIRI
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
L maju satu langkah : L = L - 1;
12
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
10 25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
Isi ditempat yang ditunjuk oleh L : Q[L] = X;
13
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
10 25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
10
X
Sehingga :
Kalau ada perintah masuk dari kiri,
maka akan masuk di elemen nomor :
dan
indeks L akan menunjuk elemen nomor :
2
2
Algoritma : L = L - 1;
Q[L] = X;
14
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
2. 23
INSERT
KANAN
DELETE
KANAN
R
X
Kalau ada perintah keluar dari kanan,
maka yang akan keluar adalah isi elemen nomor :
dan
indeks R akan menunjuk elemen nomor :
?
?
15
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
12
X
Ambil isi yang ditunjuk oleh R : X = Q[R];
16
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L R
2. 23
INSERT
KANAN
DELETE
KANAN
12
X
R mundur satu langkah : R = R - 1;
17
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7
L R
2. 23
INSERT
KANAN
DELETE
KANAN
12
X
isi elemen nomor 5 dihapus
untuk keperluan ilustrasi
18
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
n-1
9
8
25 7 12
L R
2. 23
INSERT
KANAN
DELETE
KANAN
12
X
Sehingga :
Kalau ada perintah keluar dari kanan,
maka yang akan keluar adalah isi elemen nomor :
dan
indeks R akan menunjuk elemen nomor :
5
4
19
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
n-1
9
8
25 7
L R
2. 23
INSERT
KANAN
DELETE
KANAN
12
X
Kalau ada perintah keluar dari kanan,
maka yang akan keluar adalah isi elemen nomor :
dan
indeks R akan menunjuk elemen nomor :
Algoritma : X = Q[R];
R = R - 1;
5
4
isi elemen nomor 5 dihapus
untuk keperluan ilustrasi
20
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
2. 23
INSERT
KANAN
DELETE
KANAN
R
X
Kalau ada perintah keluar dari kiri,
maka yang akan keluar adalah isi elemen nomor :
dan
indeks L akan menunjuk elemen nomor :
?
?
21
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
25
X
Ambil isi yang ditunjuk oleh L : X = Q[L];
22
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
25
X
L mundur satu langkah : L = L + 1;
23
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
25
X
isi elemen nomor 3 dihapus
untuk keperluan ilustrasi
24
INSERT
KIRI
DELETE
KIRI
0
1
2
3
4
5
6
7
8
n-1
9
25 7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
25
X
Sehingga :
Kalau ada perintah keluar dari kiri,
maka yang akan keluar adalah isi elemen nomor :
dan
indeks L akan menunjuk elemen nomor :
3
4
Algoritma : X = Q[L];
L = L + 1;
25
INSERT
KIRI
0
1
2
3
4
DELETE
KIRI
5
6
7
8
n-1
9
7 12
L
R
2. 23
INSERT
KANAN
DELETE
KANAN
25
X
Kalau ada perintah keluar dari kiri,
maka yang akan keluar adalah isi elemen nomor :
dan
indeks L akan menunjuk elemen nomor :
3
4
isi elemen nomor 3 dihapus
untuk keperluan ilustrasi
26
2. 24
3.2.2. Prinsip Proses :
bukan FIFO bukan juga LIFO
tapi keluar masuk dari kedua ujungnya sesuai
dengan kesempatan yang ada
3.2.3. Proses.
a. AWAL (Inisialisasi)
b. INSERT (Sisip, Masuk, Simpan, Tulis)
c. DELETE ( Hapus, Keluar, Ambil, Baca)
27
a. Algoritma dasar untuk proses AWAL
(Inisialisasi),
2. 24
void AWAL(void)
{ L = 0;
R = -1;
}
Ilustrasi hasil proses awal :
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
0
L
-1
R
X
28
2. 24
Kondisi awal :
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
Pada saat ini , proses apa yang bisa dilakukan ?
a.
b.
c.
d.
Insert
Insert
Delete
Delete
Kanan
Kiri
Kanan
Kiri
?
29
2. 24
Kondisi awal :
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
Pada saat ini , proses apa yang bisa dilakukan ?
Jawab : Hanya Insert Kanan
R = R + 1;
Q[R] = X;
30
2. 24
Insert Kanan :
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
25
X
31
2. 24
Insert Kanan :
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
RL
25
X
R maju satu langkah
R = R + 1;
32
2. 24
Insert Kanan :
0
Q[ ]
1
2
3
4
5
6
7
8
n-1
9
25
RL
25
X
Isi ditempat yang ditunjuk oleh R
Q[R] = X;
33
2. 24
Bagaimana kalau : Insert Kiri ?
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
25
X
34
2. 24
Bagaimana kalau : Insert Kiri ?
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
25
X
L maju satu langkah
L = L - 1;
Tidak Error
35
2. 24
Bagaimana kalau : Insert Kiri ?
0
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
25
X
Isi ditempat yang ditunjuk oleh L
Q[L] = X;
Error
36
b. Algoritma dasar untuk proses INSERT
Q[ ]
INSERT
KIRI
0
1
2
DELETE
KIRI
b.1. Insert Kiri
void INSERT_KIRI(void)
{ L = L - 1;
Q[L] = X;
}
3 4
5
6
x x x
L
7
8
n-1
9
2. 25
INSERT
KANAN
DELETE
KANAN
R
b.2. Insert Kanan
void INSERT_KANAN(void)
{ R = R + 1;
Q[R] = X;
}
37
c. Algoritma dasar untuk proses DELETE
Q[ ]
INSERT
KIRI
0
1
2
DELETE
KIRI
c.1. Delete Kiri
void DELETE_KIRI(void)
{ X = Q[L];
L = L + 1;
}
3 4
5
6
x x x
L
7
8
n
9-1
2. 25
INSERT
KANAN
DELETE
KANAN
R
c.2. Delete Kanan
void DELETE_KANAN(void)
{ X = Q[R];
R = R - 1;
}
38
3.2.4. Kondisi Antrian
2. 26
A. KOSONG
Tak ada yang bisa diambil
B. PENUH
b1. Penuh Kanan , Tak bisa diisi dari kanan
b2. Penuh Kiri, Tak bisa diisi dari kiri
C. BISA DIISI
c1. Bisa diisi dari Kanan
c2. Bisa diisi dari Kiri
D. ADA ISINYA
Bisa keluar baik dari kanan maupun dari kiri
39
Ilustrasi Proses :
0
2. 24
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
25
X
- Kondisi awal
- Hanya bisa Insert Kanan
- Misal nilai X = 25
INSERT KANAN
40
Ilustrasi Proses :
0
2. 24
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
L
R
25
X
INSERT KANAN
R maju satu langkah
R = R + 1;
41
Ilustrasi Proses :
0
2. 24
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
L R
25
X
Ilustrasi R & L
42
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
6
7
8
n-1
9
25
L R
25
X
Isi ditempat yang ditunjuk oleh R
R == L
antrian hanya berisi satu elemen
43
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
6
7
8
n-1
9
25
L
R
12
X
INSERT KANAN
R maju satu langkah
R = R + 1;
44
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
6
7
8
n-1
9
25 12
L
R
12
X
Isi ditempat yang ditunjuk oleh R
R - L == 1
antrian berisi 2 elemen
45
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
6
7
8
n-1
9
25 12
L
R
17
X
Misal disi terus
46
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
6
7
8
n-1
9
25 12 17
L
R
17
X
Isi ditempat yang ditunjuk oleh R
R - L == 1
antrian berisi 2 elemen
47
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
25 12 17 10 15
L
6
7
8
n-1
9
8
R
8
X
Dan seterusnya sampai
kondisi seperti ini
48
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
25 12 17 10 15
L
6
7
8
n-1
9
8
R
25
X
DELETE KIRI
Misal satu persatu didelete dari kiri
Ambil yang ditunjuk oleh L
X = Q[L];
49
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
12 17 10 15
8
L
R
6
7
8
n-1
9
25
DELETE KIRI
Kemudian :
X
L mundur satu langkah
L = L + 1;
50
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
12 17 10 15
8
L
R
6
7
8
n-1
9
12
X
Dan seterusnya didelete kiri
51
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
17 10 15
L
6
7
8
n-1
9
8
R
12
X
Dan seterusnya didelete kiri
52
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
17 10 15
L
6
7
8
n-1
9
8
R
17
X
Dan seterusnya didelete kiri
53
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
10 15
L
6
7
8
n-1
9
8
R
17
X
Sampai kondisi seperti ini
54
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
5
X
X
X
L
6
7
8
n-1
9
R
Ini yang dijadikan ilustrasi
55
Ilustrasi Proses :
0
Q[ ]
2. 24
1
2
3
4
10 15
L
5
6
7
8
n-1
9
8
R
10
X
Ambil lagi satu persatu
(delete kiri) sampai habis
56
Ilustrasi Proses :
0
2. 24
1
2
3
Q[ ]
4
5
15
8
L
R
6
7
8
n-1
9
10
X
Ambil lagi satu persatu
(delete kiri) sampai habis
57
Ilustrasi Proses :
0
2. 24
1
2
3
Q[ ]
4
5
15
8
L
R
6
7
8
n-1
9
15
X
Ambil lagi satu persatu
(delete kiri) sampai habis
58
Ilustrasi Proses :
0
2. 24
1
2
3
Q[ ]
4
5
6
7
8
n-1
9
8
R
L
15
X
Ambil lagi satu persatu
(delete kiri) sampai habis
59
Ilustrasi Proses :
0
2. 24
1
2
3
4
Q[ ]
5
6
7
8
n-1
9
8
L R
15
X
L == R
Antrian hanya berisi 1 elemen
60
Ilustrasi Proses :
0
2. 24
1
2
3
Q[ ]
4
5
6
7
8
n-1
9
8
L R
8
X
Ambil lagi satu persatu
(delete kiri) sampai habis
61
Ilustrasi Proses :
0
2. 24
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
8
X
L == R + 1, atau
R == L - 1
Antrian kosong
62
Ilustrasi Proses :
0
2. 24
1
2
3
Q[ ]
4
5
6
7
8
n-1
9
8
L R
15
X
Misal bukan Delete Kiri,
Tapi Delete Kanan
63
Ilustrasi Proses :
0
2. 24
1
2
3
Q[ ]
4
5
6
7
8
n-1
9
8
L R
8
X
Ambil yang ditunjuk oleh R
X = Q[R];
64
Ilustrasi Proses :
0
2. 24
1
2
3
4
Q[ ]
5
6
7
8
n-1
9
8
R
L
8
X
R mundur satu langkah
R = R -1;
65
Ilustrasi Proses :
0
2. 24
1
2
3
4
5
6
7
8
n-1
9
Q[ ]
R
L
8
X
L == R + 1, atau
R == L - 1
Antrian kosong
66
3.2.4
KONDISI
ANTRIAN
a.
b.
c.
d.
Kosong
Penuh
Bisa Diisi
Ada Isinya
67
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
R
KONDISI ANTRIAN :
X
A. KOSONG : Gambar no :
R
X
LR
CIRI :
5
R
6
X
X
R
L
4
X
L
R L
2
X
?
L
X
L
X
X
R
7
R
L
68
?
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
A. KOSONG : Gambar no :
R
1
5
7
X
CIRI :
5
R
X
L
X
L == R + 1
atau
R == L - 1
L
X
R
7
R
L
X
R
KONDISI ANTRIAN :
LR
6
X
X
R
L
4
X
L
R L
2
X
69
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
X
R
X
KONDISI ANTRIAN :
R
L
4
X
L
R L
2
X
X
B. PENUH
R
b1. Penuh Kanan : Gambar no :
X
CIRI :
LR
?
5
R
6
L
X
L
X
b2. Penuh Kiri : Gambar no :
X
R
CIRI :
7
R
L
?
70
?
?
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
X
R
X
KONDISI ANTRIAN :
R
L
4
X
L
R L
2
X
X
B. PENUH
b1. Penuh Kanan : Gambar no :
R
6
X
7
8
CIRI : R == n-1
LR
5
R
6
L
X
L
X
b2. Penuh Kiri : Gambar no :
X
R
CIRI :
7
R
L
?
71
?
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
X
R
X
KONDISI ANTRIAN :
R
L
4
X
L
R L
2
X
X
B. PENUH
b1. Penuh Kanan : Gambar no :
R
6
X
7
8
CIRI : R == n-1
LR
5
R
6
L
X
L
X
b2. Penuh Kiri : Gambar no :
X
1
R
8
CIRI : L == 0
7
R
2
L
72
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
X
R
X
KONDISI ANTRIAN :
R
L
4
X
L
R L
2
X
X
B. PENUH
R
b3. Penuh Kanan & Kiri :
Gambar no :
X
8
LR
5
R
6
CIRI : R == n-1 && L == 0
L
X
L
X
X
R
7
R
L
73
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
C. BISA DIISI
c1. Bisa Diisi dari Kanan:
R
Gambar no :
X
CIRI :
5
R
L
X
L
X
?
Gambar no :
R
7
R
?
b2. Bisa Diisi dari Kiri:
X
L
CIRI :
X
R
KONDISI ANTRIAN :
LR
6
X
X
R
L
4
X
L
R L
2
X
?
?
74
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
R
KONDISI ANTRIAN :
X
C. BISA DIISI
c1. Bisa Diisi dari Kanan:
Gambar no : 1
2
R
X
4
LR
CIRI :
5
R
6
X
X
R
L
4
X
L
R L
2
X
L
X
L
X
5
R < n-1
b2. Bisa Diisi dari Kiri:
X
Gambar no :
R
7
R
3
L
CIRI :
?
?
75
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
R
KONDISI ANTRIAN :
X
C. BISA DIISI
c1. Bisa Diisi dari Kanan:
Gambar no : 1
2
R
X
4
LR
CIRI :
5
R
6
X
X
R
L
4
X
L
R L
2
X
L
X
L
X
R
R < n
6
7
R
5
b2. Bisa Diisi dari Kiri:
Gambar no : 3 4
X
L
3
CIRI : L > 0
5
7
76
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
X
D. ADA ISInya:
R
Gambar no :
?
X
CIRI :
5
R
?
L
X
L
X
X
R
7
R
L
X
R
KONDISI ANTRIAN :
LR
6
X
X
R
L
4
X
L
R L
2
X
77
0
1
2
3
4
5
6
7
8
2. 26
n-1
9
1
8
X
X
X
X
X
X
L
3
X
X
X
X
X
X
X
X
X
D. ADA ISInya:
Gambar no :
X
R
CIRI :
5
R
2
6
X
L
X
L
X
X
R
7
R
L
X
R
KONDISI ANTRIAN :
LR
6
X
X
R
L
4
X
L
R L
2
X
3
4
8
L < R+1
atau
L <= R
atau
R > L-1
atau
R >= L
78
KONDISI ANTRIAN :
A. KOSONG
:
2. 26
1
5
L == R+1
7
B. PENUH :
b1. Penuh Kanan :
b2. Penuh Kiri
:
6
1
7
2
b3. Penuh Kanan :
& Kiri
C. BISA DIISI:
c1. dari Kanan
:
c2. dari Kiri
:
D. ADA ISINYA
:
1
2
2
3
4
5
3
4
5
3
4
8
R == n-1
8
L == 0
8
L==0 && R==n-1
R < n-1
6
6
L > 0
7
8
L < R+1
79
2. 29
?
3.2.5
Algoritma yang lengkap
untuk
INSERT
dan
DELETE
80
a. Algoritma yang lengkap untuk proses INSERT
a.1. Insert Kiri
2. 29
void INSERT_KIRI(void)
{ if ( L > 0)
{ L = L - 1;
Q[L] = X;
}
else
printf(“Antrian Penuh Kiri”)
}
a.2. Insert Kanan
void INSERT_KANAN(void)
{ if (R < n-1)
{ R = R + 1;
Q[R] = X; }
else
printf(“Antrian Penuh Kanan”);
}
81
b. Algoritma yang lengkap untuk proses DELETE
2. 29
b1. Delete Kiri
void DELETE_KIRI(void)
{ if(L < R+1)
{ X = Q[L]; }
L = L + 1;
else
printf(“Antrian Kosong”);
}
b2. Delete Kanan
void DELETE_KANAN(void)
{ if(L < R+1)
{ X = Q[R];
R
=
R - 1; }
else
printf(“Antrian Kosong”);
}
82
3.3 SOAL SOAL LATIHAN MANDIRI
0
Q[ ]
1
2
3
4
5
X
X
X
L
6
7
8
n-1
2. 30
9
R
SOAL UNTUK DOUBLE ENDED QUEUE YANG DIILUSTRASIKAN
PADA GAMBAR DIATAS.
1. Sebutkan ciri bahwa Queue :
a. Kosong tak ada isinya
b. PenuhKanan, tak bisa diisi diisi dari kanan
c. Penuh Kiri, Tak bisa diisi dari kiri
d. Penuh Total, Tak bisa diisi baik dari kanan maupun dari kiri.
e. e1. Bisa diisi dari kanan
e2. Bisa diisi dari kiri
e3. Bisa diisi baik dari kri maupun dari kanan.
f. Hanya bisa diisi dari kanan, dari kiri tak bisa diisi
g. Hanya bisa diisi dari kiri, dari kanan tak bisa diisi
83
h. Ada isinya
2. 30
i. Hanya berisi 10 pengantri
j. Paling banyak bisa masuk dari kiri, hanya 10 pengantri
k. Paling banyak bisa masuk dari kanan, hanya 10 pengantri
l. Jumlah sisa tempat yang masih bisa diisi dari kanan dan
dari kiri hanya ada 10 tempat (elemen)
2. Tulis algoritma dasar untuk:
a.
b.
c.
d.
e.
Inisialisasi.
Insert sebuah record dari kanan
Insert sebuah record dari kiri
Delete sebuah record dari kiri
Delete sebuah record dari kanan.
3. Tulis algoritma yang lengkap untuk :
a. Insert sebuah record dari kanan
b, Insert sebuah record dari kiri
c. Delete sebuah record dari kanan
d. Delete sebuah record dari kiri.
84
4. A. Tulis algoritma yang lengkap untuk mengisi antrian dari
kanan record per record
sampai antrian penuh kanan,
atau tak bisa diisi lagi dari kanan.
B. Tulis algoritma yang lengkap untuk mengisi antrian dari
kiri record per record
sampai antrian penuh kiri, atau
tak bisa lagi diisi dari kiri.
2. 30
5. A. Tulis algoritma yang lengkap untuk mendelete isi antrian dari
kanan record per record sampai antrian kosong
B. Tulis algoritma yang lengkap untuk mendelete isi antrian dari
kiri record per record sampai antrian kosong.
6. A. Tulis algoritma yang lengkap untuk mengisi antrian dari kanan
record per record sebanyak 10 record selama antrian belum
penuh kanan. . Apabila antrian sudah penuh kanan, walaupun
belum mengisi 10 record, proses pengisian dihentikan.
B. Tulis algoritma yang lengkap untuk mengisi antrian dari kiri
record per record sebanyak
10 record selama amtrian belum
penuh kiri. Apabila antrian sudah penuh kiri, walaupun belum
mengisi 10 record, maka proses pengisian harus dihentikan. 85