JURUSAN SISTEM INFORMASI SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014
BAB XII TEORI DASAR 1. PENDAHULUAN Struktur data Antrean (Queue) adalah suatu bentuk khusus dari List Linier dengan operaso pemasukan data yanh hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang/ekor (Tail) dan operasi penghapusan hanya diperbolehkan pada sisi yang disebut sisi depan/kepala(Head) dari Linked list. Prinsip antrean : 1. FIFO (FIRST IN FIRST OUT) 2. FCFS (FIRST COME FIRST SERVE) yang tiba lebih awal, maka akan dilayani terlebih dahulu
-1 0 1 2 3 4 5 6 7 max =8 Head=-1, tail=-1 OPERASI QUEUE Create Untuk menciptakan dan menginisialisasi queue dengan cara membuat Head dan Tail = -1. ISEMPTY Untuk memeriksa apakah queue kosong ISFULL Untuk memeriksa apakah queue sudah penuh ENQUEUE Untuk menambahkan item pada posisi paling belakang. DEQUEUE Untuk meghapus item dari posisi paling depan CLEAR Untuk mengosongkan queue.
A. CREATE Digunakan untuk membentuk dan menunjukan awal terbentuknya suatu queue atau antrean. Fungsi Create dalam C++ : Void Create() { Antrean.head=antrean.tail=-1; }
-1 0 1 2 3 4 5 6 7 max =8 Head=-1, tail=-1 antrian pertama kali B. ISEMPTY Untuk memeriksa apakah antrean penuh atau kosong. Fungsi ISEMPTY dalam C++ : Int IsEmpty() { If(antrean.tail==-1) Return 1; Else Return 0; }
-1 0 1 2 3 4 5 6 7 max =8 Head=-1, tail=-1 antrean kosong karena tail=-1 C. ISFULL Untuk mengecek apakah antrean sudah penuh atau belum. Fungsi isfull dalam C++ : int isFull() { If(antrean.tail==MAX-1) Return 1; Else Return 0; } 4 45 1 8 5 12 7 78 0 1 2 3 4 5 6 7 max =8 Head=-1, tail=-1 antrean kosong karena tail=MAX-1 D. ENQUEUE Untuk menambahkan elemen ke dalam antrean, penambahan elemen selalu dilakukan pda elemen paling belakang. Fungsi Enqueue dalam C++ : Void Enqueue(int data) { If(IsEmpty()==1) { Antrean.head=antrean.tail=0; antrean.data[antrean.tail]=data; Printf(%dmasuk!,antrean.data[antrean.tail]); } Else If)IsFull()==0 { Antrean.tail++; Antrean.data[antrean.tail]=data; Printf(%dmasuk!,antrean.data[antrean.tail]); } 4 45 1 8 0 1 2 3 4 5 6 7 max =8 Head=0, tail=1 , tail=2, tail=3, enqueue (8) E. DEQUEUE Digunakan untuk menghapus elemen terdepan (head) dari antrean. Fungsi Dequeue dalam C++ : Int dequeue() { Int I; Int e=antrean.data[antrean.head]; For(i=antrean.head;i<antrean.tail-1;i++) { Antrean.data[i]=antrean.data[i+1]; } Antrean.tail--; Return e; }} 4444 45 1 8 0 1 2 3 4 5 6 7 max =8 Head=0, tail=1 , tail=2, tail=3, enqueue () 45445 1 8 0 1 2 3 4 5 6 7 max =8 Head=0, tail=1 , tail=2, tail=3, maju semua, tail
F. CLEAR Untuk menghapus elemen dalam antrian dengan cara membuat tail dan head = -1. Fungsi Clear dalam C++ : Void clear() { Antrean.head=antrean.tail=-1; Printf(data clear); }
0 1 2 3 4 5 6 7 max =8 Head=-1, tail=1
Program queue: /* * que.cpp * * Created on: Jun 10, 2014 * Author: SAMSUNG */
#include <iostream> int f,r,df; int qu[50]; void enQueue(void); void deQueue(void); void Tampilkan(void); using namespace std; int main(){ int k; for(k=0;k<50;k++) qu[k]=0; while(1){ cout<<"=======PILIHAN======="<<endl; cout<<" 1) enQueue"<<endl; cout<<" 2) deQueue"<<endl; cout<<" 3) Tampilkan queue"<<endl; cout<<" 4) Keluar!"<<endl; cout<<endl; cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>k; if(k==1)enQueue(); if(k==2)deQueue(); if(k==3)Tampilkan(); if(k==4)break; } }
} void Tampilkan(){ int i; cout<<endl<<"Queue:"<<endl; for(i=f;i<r;i++) cout<<qu[i]<<","; cout<<endl<<"presss any key. ."; }
Output program:
BAB II PENJELASAN PROGRAM PROGRAM QUEUE DENGAN TIPE DATA ABSTRAK Dengan typedef Listing program queue dengan typedef /* * quetypedef.cpp * * Created on: Jun 10, 2014 * Author: SAMSUNG */
typedef #include <iostream> typedef int haha; haha f,r,df; haha qu[50]; void enQueue(void); void deQueue(void); void Tampilkan(void); using namespace std; int main(){ haha k; for(k=0;k<50;k++) qu[k]=0; while(1){ cout<<"=======PILIHAN======="<<endl; cout<<" 1) enQueue"<<endl; cout<<" 2) deQueue"<<endl; cout<<" 3) Tampilkan queue"<<endl; cout<<" 4) Keluar!"<<endl; cout<<endl; cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>k; if(k==1)enQueue(); if(k==2)deQueue(); if(k==3)Tampilkan(); if(k==4)break; } }
Penjelasan listing program : 1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah script untuk sebuah komentar atau perintah / teks, namun jika program di run tidak akan dibaca oleh compiler, tidak muncul di output. 2. #include adalah pengarah preprocessor yang berfungsi untuk menginstruksikan compiler. 3. <iostream> adalah header atau library file untuk proses input output nantinya. 4. Using namespace std adalah penyingkatan sebuah kode 5. typedef int haha; pemberian nama typedef baru haha f,r,df; pendeklarasian tipe data baru haha qu[50]; pendeklarasian tipe data baru
void enQueue(void); pemanggilan prosedur enqueue void deQueue(void); pemanggilan prosedur dequeue void Tampilkan(void); pemanggilan prosedur tampilkan using namespace std; 6. int main(){ badan program haha k; pendeklarasian tipedata k for(k=0;k<50;k++) perulangan qu[k]=0; while(1){ perulangan dengan while cout<<"=======PILIHAN======="<<endl; menampilkan output pilihan cout<<" 1) enQueue"<<endl; menampilkan output 1) enqueue cout<<" 2) deQueue"<<endl; menampilkan output 2) dequeue cout<<" 3) Tampilkan queue"<<endl; menampilkan output tampilkan cout<<" 4) Keluar!"<<endl; menampilkan output keluar cout<<endl; member line spacing cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>k; pemanggilan tipedata yang telah di deklarasikan diatas if(k==1)enQueue(); pemilihan jika k adalah 1 maka memanggil prosedur enqueue if(k==2)deQueue(); pemilihan jika k adalah 2 maka memanggil prosedur dequeue
if(k==3)Tampilkan();pemilihan jika k adalah 3 maka memanggil prosedur tampilkan
if(k==4)break; pemilihan jika k adalah 2 maka memanggil prosedur keluar
} void Tampilkan(){ prosedur utk menampilkan Queue haha i; deklarasi data i cout<<endl<<"Queue:"<<endl; for(i=f;i<r;i++) perulangan dengan for cout<<qu[i]<<","; cout<<endl<<"presss any key. ."; keluar dari outputan }
Dengan struct #include <iostream>
int f,r,df; int qu[50]; void enQueue(void); void deQueue(void); void Tampilkan(void); using namespace std;
struct{ int k; int qu; int f; int r; int df; int i; }ue; int main(){ ue.k; for(ue.k=0;ue.k<50;ue.k++) ue.qu[ue.k]=0; while(1){ cout<<"=======PILIHAN======="<<endl; cout<<" 1) enQueue"<<endl; cout<<" 2) deQueue"<<endl; cout<<" 3) Tampilkan queue"<<endl; cout<<" 4) Keluar!"<<endl; cout<<endl; cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>ue.k; if(ue.k==1)enQueue(); if(ue.k==2)deQueue(); if(ue.k==3)Tampilkan(); if(ue.k==4)break; } }
} void Tampilkan(){ ue.i; cout<<endl<<"Queue:"<<endl; for(ue.i=ue.f;ue.i<ue.r;ue.i++) cout<<ue.qu[ue.i]<<","; cout<<endl<<"presss any key. ."; } output program :
Penjelasan program: 1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah script untuk sebuah komentar atau perintah / teks, namun jika program di run tidak akan dibaca oleh compiler, tidak muncul di output. 2. #include adalah pengarah preprocessor yang berfungsi untuk menginstruksikan compiler. 3. <iostream> adalah header atau library file untuk proses input output nantinya. 4. Using namespace std adalah penyingkatan sebuah kode 5. int f,r,df; int qu[50];
void enQueue(void); pemanggilan prosedur enqueue void deQueue(void); pemanggilan prosedur dequeue void Tampilkan(void); pemanggilan prosedur tampilkan using namespace std; 6. struct{ pemberian nama struct / pendeklarasian struct int k; int qu; int f; int r; int df; int i; }ue; nama struct 7. 8. int main(){ badan program ue.k; pendeklarasian tipedata k for(ue.k=0;ue.k<50;ue.k++) perulangan ue.qu[ue.k]=0; while(1){ perulangan dengan while cout<<"=======PILIHAN======="<<endl; menampilkan output pilihan cout<<" 1) enQueue"<<endl; menampilkan output 1) enqueue cout<<" 2) deQueue"<<endl; menampilkan output 2) dequeue cout<<" 3) Tampilkan queue"<<endl; menampilkan output tampilkan cout<<" 4) Keluar!"<<endl; menampilkan output keluar cout<<endl; member line spacing cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>ue.k; pemanggilan tipedata yang telah di deklarasikan diatas if(ue.k==1)enQueue(); pemilihan jika k adalah 1 maka memanggil prosedur enqueue if(ue.k==2)deQueue(); pemilihan jika k adalah 2 maka memanggil prosedur dequeue
if(ue.k==3)Tampilkan();pemilihan jika k adalah 3 maka memanggil prosedur tampilkan
if(ue.k==4)break; pemilihan jika k adalah 2 maka memanggil prosedur keluar
} void Tampilkan(){ prosedur utk menampilkan Queue ue.i; deklarasi data i cout<<endl<<"Queue:"<<endl; for(ue.i=ue.f;ue.i<ue.r;ue.i++) perulangan dengan for cout<<ue.qu[ue.i]<<","; cout<<endl<<"presss any key. ."; keluar dari outputan } Dengan typedef struct #include <iostream>
int f,r,df; int qu[50]; void enQueue(void); void deQueue(void); void Tampilkan(void); using namespace std; typedef struct Queue{ int k;
}ue;
int main(){ Queue ue; for(ue.k=0;ue.k<50;ue.k++) qu[ue.k]=0; while(1){ cout<<"=======PILIHAN======="<<endl; cout<<" 1) enQueue"<<endl; cout<<" 2) deQueue"<<endl; cout<<" 3) Tampilkan queue"<<endl; cout<<" 4) Keluar!"<<endl; cout<<endl; cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>ue.k; if(ue.k==1)enQueue(); if(ue.k==2)deQueue(); if(ue.k==3)Tampilkan(); if(ue.k==4)break; } }
} void Tampilkan(){ int i; cout<<endl<<"Queue:"<<endl; for(i=f;i<r;i++) cout<<qu[i]<<","; cout<<endl<<"presss any key. ."; } Output program:
Penjelasan program : 1. Tanda yang diawali dengan /* dan diakhiri tanda */ adalah script untuk sebuah komentar atau perintah / teks, namun jika program di run tidak akan dibaca oleh compiler, tidak muncul di output. 2. #include adalah pengarah preprocessor yang berfungsi untuk menginstruksikan compiler. 3. <iostream> adalah header atau library file untuk proses input output nantinya. 4. Using namespace std adalah penyingkatan sebuah kode 5. typedef struct Queue{ pendeklarasian typedef struct int k;
}ue; nama struct 6.
void enQueue(void); pemanggilan prosedur enqueue void deQueue(void); pemanggilan prosedur dequeue void Tampilkan(void); pemanggilan prosedur tampilkan using namespace std; 7. int main(){ badan program Queue ue; for(ue.k=0;ue.k<50;ue.k++) perulangan ue.qu[ue.k]=0; while(1){ perulangan dengan while cout<<"=======PILIHAN======="<<endl; menampilkan output pilihan cout<<" 1) enQueue"<<endl; menampilkan output 1) enqueue cout<<" 2) deQueue"<<endl; menampilkan output 2) dequeue cout<<" 3) Tampilkan queue"<<endl; menampilkan output tampilkan cout<<" 4) Keluar!"<<endl; menampilkan output keluar cout<<endl; member line spacing cout<<"Masukkan pilihan (1,2,3,4) dalam melakukan Queue:"; cin>>ue.k; pemanggilan tipedata yang telah di deklarasikan diatas if(ue.k==1)enQueue(); pemilihan jika k adalah 1 maka memanggil prosedur enqueue if(ue.k==2)deQueue(); pemilihan jika k adalah 2 maka memanggil prosedur dequeue
if(ue.k==3)Tampilkan();pemilihan jika k adalah 3 maka memanggil prosedur tampilkan
if(ue.k==4)break; pemilihan jika k adalah 2 maka memanggil prosedur keluar
} void Tampilkan(){ prosedur utk menampilkan Queue haha i; deklarasi data i cout<<endl<<"Queue:"<<endl; for(i=f;i<r;i++) perulangan dengan for cout<<qu[i]<<","; cout<<endl<<"presss any key. ."; keluar dari outputan }
BAB III KESIMPULAN 1. Struktur data Antrean (Queue) adalah suatu bentuk khusus dari List Linier dengan operaso pemasukan data yanh hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang/ekor (Tail) dan operasi penghapusan hanya diperbolehkan pada sisi yang disebut sisi depan/kepala(Head) dari Linked list. 2. Prinsip antrean : -FIFO (FIRST IN FIRST OUT) -FCFS (FIRST COME FIRST SERVE) 3. OPERASI QUEUE Create Untuk menciptakan dan menginisialisasi queue dengan cara membuat Head dan Tail = -1. ISEMPTY Untuk memeriksa apakah queue kosong ISFULL Untuk memeriksa apakah queue sudah penuh ENQUEUE Untuk menambahkan item pada posisi paling belakang. DEQUEUE Untuk meghapus item dari posisi paling depan CLEAR Untuk mengosongkan queue