Tutorial Queue Pada C

20:29 Pemrograman Web 0 Comments



Queue pada dasarnya berkonsep atau sama dengan system FIFO atau kepanjangan dari first in first out, atau bias diartikan data yang pertama kali di input atau di isi, maka data tersebut adalah yang pertama kali akan di proses atau dikeluarkan. Bisa diartikan sama dengan konsep antrian di sebuah loket pembelian tiket konser, orang yang datang lebih dahulu, maka akan mendapatkan tiket terlebih dahulu, dan akan masuk ke tempat konser lebih dulu dari orang-orang yang datang sesudah dia. Walaupun berbeda implementasi, struktur pada queue setidaknya harus memiliki operasi - operasi seperti di bawah ini :

EnQueue Memasukkan data ke dalam antrian
DeQueue Mengeluarkan data terdepan dari antrian
Clear Menghapus antrian
IsEmpty Memeriksa apakah antrian sudah kosong

Implementasi Queue menggunakan  Linear Array
Linear Array
Linear array adalah suatu array yang diciptakan agar menyerupai suatu garis lurus dengan satu jalan untuk masuk dan satu jalan untuk keluar. Di bawah ini merupakan contoh deklarasi kelas dari Queue Linear sebagai implementasi dari Queue menggunakan linear array. Dalam kenyataannya, anda dapat menggantikannya sesuai dengan kebutuhan yang anda miliki. Data diakses dengan menggunakan field data, sedangkan indeks pada item pertama dan item terakhir di simpan dalam field Front dan Rear. Konstruktor akan memberikan inisialisasi nilai pada Front dan Rear dengan menggunakan -1 untuk menunjukkan bahwa antrian tersebut masih kosong dan memetakan data sebanyak MAX_QUEUE yang ditunjuk oleh Data itu sendiri. Destruktor akan menghapus seluruh antrian seperti semula dan memetakan kembali memori yang digunakan oleh antrian tersebut. Operasi-Operasi Queue dengan Linear Array

  •  IsEmpty

Fungsi IsEmpty bertujuan untuk mengecek apakah queue masih ada yang kosong atau sudah berisi data - data yang telah di input atau di masukan. hal ini dilakukan dengan mengecek apakah rear bernilai -1 atau tidak. Nilai -1 menunjukan bahwa queue masih belum terisi.

  • IsFull

Fungsi IsFull bertujuan untuk mengecek apakah queue sudah penuh atau masih bisa digunakan menyimpan data dengan cara mengecek apakah nilai rear sudah sama dengan jumlah maksimum dari queue itu sendiri. Jika nilai rear dengan nilai maksimum pada queue sama, berarti queue sudah terisi penuh.

  • EnQueue

Fungsi EnQueue bertujuan untuk menginput sebuah element dalam queue.

  • DeQueue

Fungsi DeQueue bertujuan untuk mengambil sebuah element dari queue itu sendiri. Operasi ini bisa disebut juga sebagai serve. Hal ini dilakukan dengan cara memindahkan data queue sejauh satu langkah ke posisi di depannya sehingga otomatis element yang paling depan atau yang di depannya akan tertimpa dengan element yang berada di belakangnya.

  • Clear

Fungsi Clear bertujuan untuk menghapus semua lement di dalam queue dengan cara mengeluarkan semua element tersebut satu per satu hingga queue kosong tidak terisi satu datapun dengan memanfaatkan fungsi DEQueue.

Berikut ini adalah contoh aplikasi di queue yang telah saya buat :

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

 struct Node
 {
        int Data;
        struct Node* next;
 }*rear, *front;

 void kirim(int value)
{
     struct Node *temp;
     temp=(struct Node *)malloc(sizeof(struct Node));
     temp->Data=value;
     if (front == NULL)
     {
           front=temp;
           front->next=NULL;
           rear=front;
     }
     else
     {
           front->next=temp;
           front=temp;
           front->next=NULL;
     }
}

void hapus()
{
       struct Node *temp, *var=rear;
      if(var==rear)
      {
             rear = rear->next;
             free(var);
      }
      else
      printf("\nTidak ada queue");
}

void muncul()
{
     struct Node *var=rear;
     if(var!=NULL)
     {
           printf("\nNomornya adalah :  ");
           while(var!=NULL)
           {
                printf("\t%d",var->Data);
                var=var->next;
           }
     printf("\n");
     }
     else
     printf("\nQueue kosong");
}

int main()
{
     int i=0;
     front=NULL;
     printf("===================");
     printf(" \n1. Masukan Nomor");
     printf(" \n2. Hapus Nomor");
     printf(" \n3. Keluar \n");
     printf("===================\n");
     while(1)
     {
          printf(" \nPilih salah satu : ");
          scanf("%d",&i);
          switch(i)
          {
                case 1:
                {
                     int value;
                     printf("\nMasukan angka : ");
                     scanf("%d",&value);
                     kirim(value);
                     muncul();
                     break;
                }
                case 2:
                {
                     hapus();
                     muncul();
                     break;
                }
                case 3:
                {
                     exit(0);
                }
                default:
                {
                     printf("\nPilihlah sesuai menu");

                }
            }
      }
}


Rizky Abdul Ghani Suherli
1154058

https://github.com/rizkyghani16/Queue

0 komentar: