Selasa, 17 November 2015

KONSEP QUEUE [C++]

Queue   pada  Struktur Data  atau antrian  adalah sekumpulan data yang mana  penambahan elemen hanya bisa dilakukan pada suatu ujung ... thumbnail 1 summary


Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana  penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisi belakang (rear), dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Pada Stack atau tumpukan menggunakan prinsip “Masuk terakhir keluar pertama”atau LIFO (Last In First Out), Maka pada Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail (depan/front, belakang/rear).

Operasi-operasi Queue :
1. Create()
Untuk menciptakan dan menginisialisasi Queue

2. IsEmpty()
Untuk memeriksa apakah Antrian masih kosong
3. IsFull()
Untuk mengecek apakah Antrian sudah penuh atau belum
4. Enqueue ()
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu ditambahkan di elemen paling belakang

5. Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama (head) dari Antrian
6. Clear()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head = -1
7. Tampil()
Untuk menampilkan nilai-nilai elemen Antrian

Syntax Program : 

//header file
# include <stdio.h>
# include <conio.h>
# include <stdlib.h>
# include <string.h>
# define QSIZE 5

//deklarasi struct
typedef struct
{
      int count;
    int head,tail;
    char names[QSIZE][30];
}QUEUE; //nama struct

char *enqueue(char *);
char* dequeue();

//deklarasikan prototype fungsi
void tampil();
void inisialisasi();

//deklarasi Node
QUEUE *pq;

//fungsi main
int main()
{
      //deklarasi variabel
      int pil;
      char str[30];
      QUEUE q;
      pq=&q;
      inisialisasi(); //panggil fungsi inisialisasi
      do{
            system("cls"); //bersihkan layar
            printf("\tMENU PILIHAN : ");
            printf("\n\t______________");
            printf("\n[1] Input Data");
            printf("\n[2] Delete Data");
            printf("\n[3] Show data in queue");
            printf("\n[4] Exit\n");
            printf("\nPilihan anda : ");
            scanf("%d",&pil);
            switch(pil){
            case 1:
                  printf("\nSilahkan memasukkan sebuah kata : ");
                  fflush(stdin); //menghapus buffer data
                  gets(str);
                 puts(enqueue(str)); /*Mencetak string hasil penambahan data yang dilakukan oleh fungsi enqueue()*/
                  break;
            case 2:
                 puts(dequeue()); /*Mencetak string terhapus yang dilakukan oleh fungsi enqueue()*/
                  break;
            case 3:
                  tampil(); //panggil fungsi tampil()
                  break;
            case 4: exit(0);
            default: printf("\nMasukkan anda salah!!");
            }
            printf("\nPress Any Key to continue...");
            fflush(stdin); //membersihkan buffer data
            while(!kbhit());
      }
      while(1); //perulanagan dijalankan terus
    //return 0;
}

//fungsi untuk inisialisasi awal
void inisialisasi()
{
      pq->head = pq->tail = pq->count= 0;
}

//fungsi untuk menambah data string dalam queue
char* enqueue(char *p)
{
      if(pq->count==QSIZE)
            return "\n\n\t\t Error: Antrian penuh";
      pq->tail= (pq->tail)%QSIZE;
      strcpy(pq->names[(pq->tail)++],p);
      pq->count++;
      return "Data telah berhasil dimasukkan";
}

//fungsi untuk menghapus data string dalam queue
char* dequeue()
{
      if(pq->count==0)
            return "\n\n\t\t Error: Antrian kosong";
      pq->head= (pq->head)%QSIZE;
      pq->count--;
      printf("\nData yang telah dihapus adalah\n:");
      return pq->names[(pq->head)++];
}

//fungsi untuk menampilkan data yang berada dalam antrian
void tampil()
{
      int i=pq->head;
      int x=0;
      if(pq->count==0)
            printf("Antrian kosong\n");
      else
      {
            while(x<pq->count)
            {
                  if(i==QSIZE)
                        i%=QSIZE;
                  printf(":%s\n",pq->names[i]);
                  i++;
                  x++;
            }
      }
}


DAFTAR PUSTAKA

http://blog-arul.blogspot.co.id/2012/01/queue-pada-struktur-data.html

Tidak ada komentar

Posting Komentar

Facebook