Kamis, 30 Desember 2010

Antrian (Queue)


ANTRIAN DENGAN ARRAY

Pengertian
Antrian (Queue) dapat diartikan sebagai suatu kumpulan data yang seolah-olah terlihat seperti ada data yang diletakkan di sebelah data yang lain seperti pada gambar 01. Pada gambar, data masuk melalui lorong di sebelah kanan dan masuk dari terowongan sebelah kiri. Hal ini membuat antrian bersifat FIFO (First In First Out), beda dengan stack yang berciri LIFO.





Gambar 01

Antrian dapat dibuat baik dengan array maupun dengan struct. Pada pembuatan antrian dengan array, antrian yang disajikan bersifat statis. Ini disebabkan oleh jumlah maksimal array sudah ditentukan sejak deklarasi awal.

Algoritma PUSH
Salah satu algoritma untuk proses memasukkan data (PUSH) adalah sebagai berikut:
  1. Masukkan inputan (x)
  2. Jika variabel cek = max (Nilai maksimal array), kerjakan langkah 2. Jika tidak, kerjakan langkah 3.
  3. Cetak “ANTRIAN PENUH” lalu selesai.
  4. Selama cek kurang dari max, maka c ß c +1 dan data [c] ß x.

Algoritma POP
Salah satu algoritma untuk proses mengeluarkan data (POP) adalah sebagai berikut:
  1. Jika cek = 0, cetak “ANTRIAN KOSONG” kemudian selesai. Jika tidak, lakukan langkah 2.
  2. mulai x=0, selama x kurang dari cek, lakukan langkah 2 dan 3.
  3. data[x] ß data [x+1].
  4. data[cek-1] ß NULL.
  5. cek ß cek – 1


Contoh program yang mengimplementasikan algoritma di atas :

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

void main()
{
      int cek=0, data[20], x, hapus;
      char pil;
      do {
                  clrscr();
                  printf("1. Tambah Antrian\n");
                  printf("2. Hapus Antrian\n");
                  printf("3. Lihat Antrian\n");
                  printf("4. Keluar\n");
                  printf("Silahkan masukkan pilihan anda...  ");
                  pil=getche();
                 

            if(pil!='1' && pil !='2' && pil !='3' && pil!='4' )
                        printf("\n\nAnda salah mengetikkan inputan...\n");
                  else
                  {
                        if(pil=='1')   //PUSH
                        {
                              if(cek==20)
                                    printf("\nAntrian Penuh\n\n");
                              else
                              {
                              printf("\nMasukkan nilai--> ");scanf("%i",&x);
                                    data[cek]=x;
                                    cek++;
                              }
                        }
                        else
                        {
                              if(pil=='2')     //POP
                              {
                                    if(cek==0)
                                          printf("\nAntrian kosong\n\n");
                                    else
                                    {
                                          hapus=data[0];
                                          for(int v=0;v<cek;v++)
                                                data[v]=data[v+1];
                                          data[cek-1]=NULL;
                                          cek--;
                                 printf("\nData dgn nilai=%i terhapus.",hapus);
                                    }
                                    getch();
                              }
                              else
                              {
                                    if(pil=='3')   //CEK DATA
                                    {
                                          if(cek==0)   
                                                printf("\nAntrian Kosong.\n\n");

                                          else
                                          {
                                                printf("\n");
                                                for(int z=0;z<cek;z++)
                                                {
                                                      printf(" | ");
                                                      printf("%i",data[z]);
                                                      printf(" | ");
                                                }

                                          }
                                          getch();
                                    }
                              }
                        }
                  }

      }while(pil!='4');
}




Tidak ada komentar:

Posting Komentar