Selasa, 05 Januari 2016

QUEUE

Queue / Antrian adalah suatu kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada satu ujung (disebut dengan sisi belakang atau rear) dan penghapusan (pengambilan elemen dilakukan lewat ujung  lain (disebut dengan sisi depan atau front).

Queue bersifat FIFO (First In First Out) artinya Benda yang pertama masuk ke dalam queue akan menjadi yang pertama keluar dari queue.
Notasi Pada Queue :
• FRONT (Q)  = Menunjukkan posisi terdepan dari suatu antrian Q.
• REAR (Q)    = Menunjukkan posisi terakhir dari suatu antrian Q.
• NOEL (Q)    = Menunjukkan jumlah elemen di dalam Antrean Q.
Operasi Pada Queue :
• Create (Q)     = Berguna untuk membuat sebuah queue/antrian kosong.
• Isempty (Q)  = Berguna untuk mengecek sebuah nilai pada queue. Nilai akan bernilai True jika queue tidak terdapat sebuah elemen di dalamnya, sedangkan nilai akan bernilai False jika queue terdapat elemen di dalamnya.
• Insert (Element,Q) = Berguna untuk menyisipkan atau memasukkan sebuah elemen ke dalam queue, dimana menyisipkan melalui paling belakang (rear).
• Remove (Q)  = Berguna untuk menghapus sebuah elemen yang terdapat paling depan (front) pada sebuah queue.

Jenis – Jenis Antrian :
A.  Deque
Adalah antrian dimana elemennya bisa masuk dan keluar lewat kedua ujungnya (berbeda dengan queue yang hanya bisa masuk lewat ujung belakang dan keluar lewat ujung depan).

Struktur Umum Deque :


Deque mempunyai 2 jenis variasi, yaitu :
• Deque input terbatas            = suatu deque yang membatasi pemasukkan elemen hanya pada satu ujung dari list, sementara penghapusan elemen boleh dilakukan pada kedua ujung list.

• Deque output terbatas = suatu deque yang membatasi penghapusan elemen hanya pada satu ujung dari list, sementara pemasukkan elemen boleh dilakukan pada kedua ujung list.

B. Antrian Berprioritas
Adalah suatu queue yang setiap elemennya telah diberikan sebuah prioritas, dan urutan proses penghapusan elemen adalah berdasarkan aturan berikut :
• Elemen yang prioritasnya lebih tinggi, diproses lebih dahulu dibandingkan dengan elemen yang prioritas lebih rendah.
• Dua elemen dengan prioritas yang sama, diproses sesuai dengan urutan mereka sewaktu dimasukkan ke dalam priority queue.


Program Queue pada bahasa C.

# include <stdio.h>
# define MAX 5

int queue_arr[MAX];
int rear = -1;
int front = -1;

main() {
    int choice;
clrscr();
while(1)
    {
      printf("\n\n");
      printf("+===================+ \n");
      printf("|    Menu Utama     | \n");
      printf("+===================+ \n");
      printf("| 1. Insert Queue   | \n");
      printf("| 2. Delete Queue   | \n");
      printf("| 3. Display Queue  | \n");
      printf("| 4. Quit           | \n");
      printf("+===================+ \n");
      printf("Masukkan Pilihan : ");
      scanf("%d",&choice);
      printf("\n\n");
         
      switch(choice)
 {
    case 3 :
 clrscr();
     display();
     break;
   
    case 2 :
     clrscr();
     del();
     break;

    case 1:
                  clrscr();
     insert();
     break;

    case 4:
     clrscr();
     exit(1);

    default:
     printf("Salah Memasukkan Pilihan tuh . . ! \n");
 }/*akhir dari switch*/
    }/*akhir dari while*/
      }/*akhir dari main()*/

del()
{
if (front == -1 || front > rear)
     {
printf("Queue Underflow\n");
return ;
     }
 else
     {
printf("Element deleted from queue is : %d\n", queue_arr[front]);
front=front+1;
     }
}/*akhir dari fungsi del()*/


insert()
{
 int added_item;
  if (rear==MAX-1)
      printf("Queue Overflow !! \n");
  else
      {
if (front==-1) /*jika queue kosong */
front=0;
printf("Masukkan Elemen Kedalam Queue : ");
scanf("%d", &added_item);
rear=rear+1;
queue_arr[rear] = added_item ;
      }
}/*akhir dari fungsi insert() */


display()
 {
    int i;
    if (front == -1)
printf("Queue Kosong !\n");
    else
  {
    printf("Queue  :\n");
    for(i=front;i<= rear;i++)
    printf("%d ",queue_arr[i]);
    printf("\n");
  }
 }/*akhir dari fungsi display() */




Sumber : Struktur data pert5

Tidak ada komentar:

Posting Komentar