Tugas Algoritma Struktur Data Menggunakan Queue
Nama
: Reyhan Fadhil Haryono
Nim
: 1202214008
Kelas
: S1IT-21-001
Algoritma
Struktur Data
Program Aplikasi Queue
”Menu Antrian Toko Cuci Sepatu Berkah”
A.
Queue
Kaidah utama dalam konsep queue adalah
FIFO yang merupakan singkatan dari First In First Out, artinya
adalah data yang pertama kali dimasukkan atau disimpan, maka data tersebut
adalah yang pertama kali akan diakses atau dikeluarkan. Analoginya sama dengan
antrian di sebuah loket pembelian tiket kereta, orang yang datang lebih dahulu,
maka akan dilayani terlbih dahulu, dan akan selesai lebih dulu dari orang-orang
yang datang setelahnya.
B.
Operasi yang digunakan
Dalam
program ini terdapat beberapa, yaitu:
1.
CreateEmpty : untuk menciptakan dan menginisialisasi Queue.
2.
IsEmpty : berguna untuk memeriksa penuh atau tidaknya sebuah antrian.
3.
IsFull : berguna untuk mengecek apakah queue sudah penuh atau belum.
4.
IsOneElmt
5.
Add : Menambah data dalam antrian.
6.
Del : Menghapus data dalam antrian.
7.
PrintQueue : Menampilkan data dalam queue.
8.
NQueue : Menampilkan jumlah dari barisan queue
9.
IdxQueue : Menentukan dalam index berapa queue tersebut.
10.
GeserAntrian : Memindahkan antrian yang
berada di belakang di menjadi kedepan.
C.
Fungsi
Algoritma
1. Procedure
CreateEmpty (Q : Queue)
Kamus:
Algoritma
:
Q.Head ß -1
Q.Tail ß -1
2.
Function IsEmpty (Q : Queue) à
Boolean
Kamus
:
Algoritma
:
à (Q.Head = -1 AND Q.Tail = -1)
3. Function IsFull (Q : Queue) à Boolean
Kamus
:
Algoritma
:
à (Q.Head < Q.Tail AND Q.Tail – Q.Head = MaxEl – 1 OR
Q.Head > Q.Tail AND Q.Head – Q.Tail = 1)
4. Funtion IsOneElmt ( Q : Queue) à Boolean
Kamus :
Algoritma :
è (Q.Head = Q.Tail AND Q.Head ≠ -1)
5. Procedure Add ( Input Q : Queue, Val : Infotype)
Kamus :
Algoritma :
if
(!IsFull(Q)) then
if (IsEmpty(Q)) then
Q.Head = Q.Tail = 0
Q.T[Q.Head] ß val
else
if (Q.Tail = MaxEl-1)then
Q.Tail ß 0
else
Q.Tail ß Q.Tail + 1
Q.T[Q.Tail] ß val
Output
( Saving !! )
6. Procedure Del ( Input Q : Queue, Input Val : Infotype )
Kamus :
Algoritma :
if (!IsEmpty(Q)) Then
val ß Q.T[Q.Head];
if (IsOneElmt(Q)) Then
CreateEmpty(Q)
else
if (Q.Head = MaxEl-1) Then
Q.Head ß 0
else
Q.Head ß Q.Head + 1
else
Output( !!!ANTRIAN TIDAK DITEMUKAN!!! )
7. Procedure PrintQueue ( Q : Queue)
Kamus:
i
: Address
Algoritma :
if
(Q.Head<=Q.Tail) Then
for (int i = Q.Head; i
< Q.Tail + 1; i++)
Output(Q.T[i] "
")
else
for (int i = Q.Head; i
< MaxEl-1; i++)
Output(Q.T[i] "
")
for (int i = 0; i <
Q.Tail; i++)
Output(Q.T[i] " ")
8. Function NQueue ( Q : Queue ) à Integer
Kamus :
hasil
: integer
Algoritma :
if(Q.Head>=Q.Tail)
Then
hasil ß Q.Head-Q.Tail +1
else if (Q.Head<Q.Tail)
hasil ß Q.Tail +1 -Q.Head
else
hasilß0
Output(“Jumlah
antrian : “)
à hasil
9. Funtion IdxQueue(Q : Queue, val :
Infotype)
Kamus :
Algoritma :
if(Q.Head<Q.Tail)
Then
for(int i = Q.Head; i <= Q.Tail i++)
if(val = Q.T[i]) Then
Output("nomer antrian ada
di dalam index ke- ")
else
Output(“nomer antrian tidak ada
di index ke- ")
10. Procedure GeserAntrian (Input Q
: Queue, indeks : integer)
Kamus :
Temp
: Integer
a
ß
Q.Head : Integer
b
ß
Q.Tail : Integer
Algoritma :
if(Q.Head < Q.Tail) Then
for(int i = a; i < b; i++)
Temp ß Q.T[Q.Head]
Del(Q,indeks)
Add(Q, temp)
else
for(int i = b; i < a; i++)
temp ß Q.T[Q.Tail]
Del(Q,indeks)
Add(Q, temp)
Comments
Post a Comment