Thursday, July 28, 2011

ANTRIAN DENGAN ARRAY

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.
  
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');
}


Pengembangan :
  1. Buatlah program untuk simulasi antrian registrasi UKDW. Yang tercatat adalah nim mahasiswa.
  2. Kembangkan program tersebut sehingga bisa menyimpan keterangan nim, nama, dan prodi mahasiswa tersebut.
  3. Tambahkan fitur untuk mengetahui urutan antrian dari nim tertentu.

Soal :
Buat pengembangan program dari latihan di atas dengan beberapa fitur :
  1. Bisa melihat urutan untuk prodi tertentu ataupun secara keseluruhan.
  2. Bisa POP melompati urutan. Jadi misalkan urutan nomor 2 keluar (POP) lebih dulu daripada urutan pertama.

1 comments:

Anry said...

ada gak bang hasil pengembangan nya

Post a Comment

Blogroll

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Sweet Tomatoes Printable Coupons