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