Linear Queue

Struktur Data - Pertemuan 6

"Linear Queue"

(Queue) adalah suatu bentuk khusus dari List Linier dengan operasi penyisipan (Insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi Belakang (Rear) dan operasi penghapusan (Deletion) hanya diperbolehkan pada sisi lainnya yang disebut sisi Depan (Front) dari List.

Ilustrasi :

Misal n = 10 

F (Front) : menunjuk pengantri paling depan/siap untuk keluar/ siap untuk dilayani
R (Rear) : menunjuk pengantri paling belakang/paling akhir masuk
R = 6, artinya : Pernah masuk 7 pengantri dengan urutan masuk Q[0], Q[1], Q[2], Q[3], Q[4], Q[5], Q[6]
F = 3, artinya : Sudah keluar sebanyak 3 pengantri dengan urutan keluar Q[0], Q[1], Q[2]

Prinsip Linear Queue yaitu FIFO (First In First Out) atau FIFS (First In First Serve) 


Proses pada Linear Queue :

  • Awal (Inisialisasi)
  • Insert (Sisip, Masuk, Simpan, Tulis)
  • Delete (Hapus, Keluar, Ambil, Dilayani)
  • Reset (Kembali ke Keadaan Awal)
Kondisi Antrian :


SOAL.

Buatlah suatu program Animasi Antrian dengan 4 buah pilihan : INSERT, DELETE, CETAK ANTRIAN, QUIT. 
Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang akan dimasukan kedalam antrian 
Jika dipilih DELETE : maka karakter pertama masuk akan dikeluarkan dari antrian 
Jika dipilih CETAK ANTRIAN : komputer menampilkan karakter yang ada pada antrian 
Jika dipilih QUIT : program keluar 

Program :

#include<iostream>
#include<conio.h>
#include<stdlib.h>
#define n 10
using namespace std;

void Insert();
void Delete();
void Cetakantrian();
void Inisialisasi();
int PIL,F,R;
char PILIHAN [1],HURUF;
char Q[n];
main ()
{
     Inisialisasi();
     do
     {
           cout<<" ANIMASI ANTRIAN"<<endl;
           cout<<"=============="<<endl;
           cout<<"1. INSERT"<<endl;
           cout<<"2. DELETE"<<endl;
           cout<<"3. CETAK ANTRIAN"<<endl;
           cout<<"4. QUIT"<<endl;
           cout<<"PILIHAN : "; cin>>PILIHAN;
           PIL=atoi(PILIHAN);
           switch (PIL)
           {
           case 1:
                Insert ();
                break;
           case 2:
                Delete();
                break;
           case 3:
                Cetakantrian();
                break;
           default:
                cout<<"TERIMA KASIH"<<endl;
                break;
           }
           cout<<"press any key to continue"<<endl;
           getch();
           system("cls");
     }
     while (PIL<4);
}
void Insert()
{
      if(R<n-1)
      {
           cout<<endl<<"MASUKAN 1 HURUF : ";
         cin>>HURUF;
         Q[++R]=HURUF;
}
else
    cout<<"Antrian Penuh"<<endl;
}

void Cetakantrian()
{
     if(F<R+1)
     {
           for (int i=F;i<=R;i++)
                cout<<"Antrian["<<i<<"] = "<<Q[i]<<endl;
     }
     else
           cout<<"Antrian Kosong"<<endl;
}
void Delete()
{
     if(F<=R+1)
     {
           HURUF=Q[F];
           Q[F++]='\0';
           cout<<"Data yang diambil : "<<HURUF<<endl;
           if(F==n)
                Inisialisasi();
     }
     else
           cout<<"Antrian Kosong"<<endl;
}
void Inisialisasi()
{
     F=0;
     R=-1;
}


Komentar

Postingan Populer