inf202: struktur data antrian (queue -...

45
Pertemuan 11: INF202: Struktur Data ANTRIAN (QUEUE) Dosen: Wayan Suparta, PhD

Upload: dangkiet

Post on 18-Apr-2019

261 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Pertemuan 11:

INF202: Struktur Data

ANTRIAN (QUEUE)

Dosen: Wayan Suparta, PhD

Page 2: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Introduction to Queue

• Proses antrian merupakan suatu proses yang berhubungan

dengan kedatangan pelanggan pada

suatu fasilitas pelayanan

menunggu pelayanan

dilayani dan

akhirnya meninggalkan fasilitas tersebut sesudah dilayani.

• Prinsip Antrean : FIFO (First In First Out), atau

FCFS (First Come First Serve) “Yang Tiba lebih awal Maka akan dilayani Terlebih Dahulu”

• Berisi 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.

Page 3: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Logika Antrian

• Pengantri register dulu

• Setelah register pengantri

pertama dapat tempat

paling depan

• Pengantri selanjutnya

berada dibelakangnya

• Setelah proses pengantri

pertama selesai, antrian

setelahnya maju

• Sehingga terdapat tempat

kosong (paling belakang)

untuk pengantri baru

Page 4: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

OPERASI DASAR PADA ANTREAN

Ada 4 operasi dasar yang dapat dilakukan pada Struktur Data

Antrean, yaitu :

1. CREATE(Antrean)

2. ISEMPTY(Antrean)

3. INSERT(Elemen,Antrean)

4. REMOVE(Antrean)

Pandang misalnya Antrean Q = [ Q1 , Q2 , .., QNOEL ],

maka

1. CREATE(Antrean)

Adalah suatu operator untuk membentuk dan menunjukan

suatu Antrean Hampa Q.

Berarti : NOEL(CREATE(Q) = 0

FRONT(CREATE(Q)) = tidak terdefinisi

REAR(CREATE(Q)) = tidak terdefinisi

Page 5: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

2. ISEMPTY(Antrean)

Adalah operator yang menentukan apakah Antrean Q hampa atau

tidak. Operand dari operator ini merupakan Antrean, sedangkan

hasilnya merupakan Type data Boolean.

ISEMPTY(Q) = True, jika Q hampa, yaitu jika NOEL(Q)=0

False, jika Q tidak hampa, yaitu jika NOEL(Q) <> 0

Maka ISEMPTY(CREATE(Q)) = True.

3. INSERT(Elemen,Antrean)

Operator yang menginsert (mengisi) elemen E kedalam

Antrean Q. Elemen E ditempatkan dibagian depan dari

Antrean. Hasil dari Operasi ini adalah Antrean yang lebih

panjang.

Page 6: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

4. REMOVE(Antrean) / DELETE(Antrean) REMOVE(Q) adalah operator yang menghapus elemen bagian

depan dari Antrean Q. Hasilnya merupakan Antrean yang lebih

pendek. Pada setiap operasi ini, harga dari NOEL(Q)

berkurang satu, dan elemen kedua dari Q menjadi elemen

terdepan. Jika NOEL(Q) = 0 , maka REMOVE(Q)

memberikan suatu kondisi Error, yaitu Underflow. Jelas bahwa

REMOVE(CREATE(Q)) juga memberikan kondisi Error

Underflow.

Langkah :

- Memastikan bahwa antrean ada isinya.

- Menggeser Front, maju satu langkah

- Mengcopy isi elemen yang ditunjuk Front ke

variabel data.

Page 7: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Metode Antrian:

1. ANTREAN LINEAR

Menggunakan 2 pointer (indikator) :

- Front (F) untuk awal antrean

- Rear (R) untuk akhir antrean

Untuk pengambilan data menggunakan pointer Front (F),

sedangkan pemasukan data menggunakan pointer Rear (R).

Syarat : Front (selalu) <= Rear

Deklarasi Array 1 dimensi untuk Queue :

Var Q : Array[1..N] of Type Data;

Page 8: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh Queue (Antrian) Linear

Front Rear

Page 9: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Queue (Antrian)

Front Rear

Page 10: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Queue (Antrian)

Front Rear

Page 11: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Queue (Antrian)

Front Rear

Page 12: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Queue (Antrian)

Front Rear

Page 13: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Queue (Antrian)

Front Rear

Page 14: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Beberapa keadaan pada Antrean Linear.

Page 15: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses
Page 16: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses
Page 17: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

2. ANTREAN MELINGKAR (CIRCULAR QUEUE)

Prinsip : FIFO (First In First Out)

Page 18: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Aturan Circular Array

1. Proses penghapusan dilakukan dengan cara nilai depan

(front) ditambah 1 depan=depan + 1.

2. Proses penambahan elemen sama dengan queue linear

array yaitu nilai belakang ditambah 1

belakang=belakang + 1.

3. Jika depan = maks dan ada elemen yang akan dihapus,

maka nilai depan = 1.

4. Jika belakang = maks dan depan <> 1 maka jika ada

elemen yang akan ditambahkan, nilai belakang=1.

5. Jika hanya tinggal 1 elemen di queue (depan =

belakang), dan akan dihapus maka depan diisi 0 dan

belakang diisi dengan 0 (queue kosong).

Page 19: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Circular Array

Page 20: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Proses Circular Array

Page 21: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Proses Circular Array

Page 22: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses
Page 23: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses
Page 24: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Terlihat dari urutan proses diatas, nilai F dapat lebih kecil atau

lebih besar dari R, dimana ini merupakan hal yang tidak

dapat terjadi di antrean linear (linear queue)

Oleh karena itu agar Antrean dapat digunakan secara Maximal

harus diwujudkan dalam bentuk antrean melingkar (Circular

Queue).

Page 25: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 1: Algoritma Program Antrian

1. Preprocessor dan Header File

#include <iostream>

#define MAX 20 //maksimum data queue

using namespace std;

2. Struct data

//Deklarasi struct antrian

struct Queue

{ int front, rear, data[MAX];

}Q;

3. Memeriksa antrian

//cek apakah antrian penuh

bool isFull() {

return Q.rear == MAX; } //cek apakah antrian kosong bool

isEmpty() {

return Q.rear == 0;

}

Page 26: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Algoritma Program Antrian ……

4. Menampilkan Antrian //Menampilkan Queue

void printQueue() {

if (isEmpty())

{

cout << "Antrian kosong"<<endl;

}

else {

cout << "QUEUE : ";

for (int i = Q.front; i < Q.rear; i++) //menambahkan

koma jika data tidak terdapat di antrian pertama

cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");

cout << endl;

}

}

Page 27: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

5. Input Data Antrian

Page 28: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

6. Mengambil Data Antrian

Page 29: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

7. Menampilkan Menu

Page 30: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

LATIHAN 17 A. Modifkasi program pada Contoh 1 di atas dengan tampilan:

Inputnya serentak (tidak satu per satu)

Buat VIEW data yang diinput dan data yang dihapus

Tampilkan data antrian serentak

Menu: (1). Enqueue, (2) Dequeue, (3) View, (4) EXIT

B. Buat program antrian teller bank dengan maksimum antrian

500 dalam sehari.

C. Buat program antrian Servis Motor dengan input adalah

nomer polisi sebanyak 15 motor.

Page 31: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 2: Program Antrian

#include <iostream> #include <conio.h> #include <stdlib.h> #include <windows.h> using namespace std; char pil; int jml; void delay(); struct node { char kar; node *next; }; node *tail; //ekor node *now; node *head;

void clrscr() { system("cls"); } void gotoxy(int x, int y) { HANDLE hConsoleOutput; COORD dwCursorPosition; cout.flush(); dwCursorPosition.X = x; dwCursorPosition.Y = y; hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hConsoleOutput,dwCursorPosition); }

Page 32: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 2: sambungan if(i!=75-jml*6) { gotoxy(i+1,20);cout<<" "; gotoxy(i,21);cout<<" "; gotoxy(i+1,22);cout<<" "; } } } void dequeue() { if(head==NULL) { gotoxy(1,8); cout<<"antrean kosong !"; delay(); } else {

jml=jml-1; char delete_element=head->kar; node *temp; temp=head; head=head->next; delete temp; for(int i=69;i<=76;i++) { gotoxy(i+1,20); cout<<" O"; gotoxy(i,21); cout<<"=("<<delete_element<<")="; gotoxy(i+1,22); cout<<"| |"; delay(); gotoxy(i+1,20); cout<<" "; gotoxy(i,21); cout<<" "; gotoxy(i+1,22); cout<<" "; }

Page 33: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 2: sambungan void buatnodebaru()

{

tail=NULL;

head=NULL;

}

void push(char ch)

{

now=new node;

if(head==NULL)

{

now->kar=ch;

now->next=NULL;

tail=now;

head=now;

}

else

{

now->kar=ch;

now->next=NULL;

tail->next = now;

tail=now;

}

}

void enqueue() { int i; char temp; gotoxy(1,6); cout<<" "; gotoxy(1,8); cout<<" "; gotoxy(1,6); cout<<"masukkan @ karakter : "; cin>>temp; gotoxy(1,6); cout<<" "; push(temp); for(i=1;i<= 75-jml*6;i++) { gotoxy(i+1,20);cout<<" O"; gotoxy(i,21); cout<<"=("<<now->kar<<")="; gotoxy(i+1,22);cout<<"| |"; delay();

Page 34: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 2: sambungan int byk=0;

while(byk!=jml)

{

byk=byk+1;

for(int i=69-byk*6;i<=75-

byk*6;i++)

{

gotoxy(i+1,20); cout<<" O";

gotoxy(i,21); cout<<"=("<<head-

>kar<<")=";

gotoxy(i+1,22); cout<<"| |";

delay();

if(i!=75-byk*6)

{

gotoxy(i+1,20); cout<<" ";

gotoxy(i,21); cout<<" ";

gotoxy(i+1,22); cout<<" ";

}

}

}

}

}

void input() { gotoxy(1,1);cout<<"1.Enqueue"; gotoxy(1,2);cout<<"2.Dequeue"; gotoxy(1,3);cout<<"3.Exit"; do { gotoxy(1,4);cout<<"masukkan pilihan anda[1/2/3] : "; gotoxy(32,4);cin>>pil; gotoxy(32,4);cout<<" "; switch(pil) { case '1': { if(jml<10) { jml=jml+1; enqueue(); }

Page 35: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan else

{

gotoxy(1,8); cout<<"antrean penuh !";

delay();

gotoxy(1,8); cout<<" ";

}

break;

}

case '2':

{

dequeue();

break;

}

case '3':

{

exit(1);

break;

}

}

}while(1);

}

int main() { buatnodebaru(); jml=0; clrscr(); input(); getch(); } void delay() { for(int y=1;y<100;y++) for(int x=1;x<100;x++) for(int p=1;p<100;p++) cout<<""; }

Page 36: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: Program Queue #include <iostream>

#include <sstream>

#include <string>

#include <stdlib.h>

using namespace std;

const int MAX_ANTRIAN = 5;

struct orang

{

string nama;

int umur;

};

void buatAntrian(); // mengisi antrian kosong sebanyak MAX_ANTRIAN dengan variabel

kontrol

void tampilkanMenu(); // menampilkan menu yang ada

void eksekusiPilihan(); // mengambil pilihan dari user dan eksekusi pilihan tersebut

void tambahAntrian(); // menambah antrian paling belakang

void kurangiAntrian(); // mengurangi antrian paling depan dan menampilkan orang yang

keluar dari antrian

void printAntrian(); // menampilkan seluruh antrian yang ada

void printOrang(); // menampilkan data satu orang saja

Page 37: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan

//inisisalisasi variabel yang akan dipakai

orang antrian[MAX_ANTRIAN];

int pil, pripil, antri;

bool isEmpty = true; // penanda apakah antrian sedang kosong

bool isFull = false; // penanda apakah antrian sudah penuh

bool isOver = false; // penanda bahwa program selesai atau tidak

/* ================== MAIN PROGRAM ===================*/

int main()

{

buatAntrian();

while(!isOver)

{

tampilkanMenu();

eksekusiPilihan();

}

system("pause");

return 0;

}

Page 38: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan /* ============== END OF MAIN PROGRAM ================*/

//mengisi data awal dari antrian

void buatAntrian()

{

int i;

for(i=0; i<MAX_ANTRIAN; i++)

{

antrian[i].nama = "null"; // antrian dikatakan kosong apabila nama = null

antrian[i].umur = -1; // dan umur = -1

}

}

//menampilkan menu utama

void tampilkanMenu()

{

system("cls");

cout << "(1) tambah antrian" << endl;

cout << "(2) kurangi antrian" << endl;

cout << "(3) print antrian" << endl;

cout << "(4) keluar dari program" << endl;

cout << "masukkan pilihan anda: ";

cin >> pil; //kesatu

}

Page 39: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan //pemrosesan pilihan dari menu utama

void eksekusiPilihan()

{

if (pil == 1) {

tambahAntrian(); }

else if (pil == 2) {

kurangiAntrian(); }

else if (pil == 3)

{

//pada pilihan ini ditambahkan submenu print semua atau satu saja

cout << "(1) print semua antrian" << endl;

cout << "(2) print satu antrian" << endl;

cout << "pilihan : ";

cin >> pripil;

if (pripil == 1) {

printAntrian(); }

else if (pripil == 2) {

printOrang(); }

}

else if (pil == 4)

{

isOver = true;

}

}

Page 40: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan //prosedur untuk penambahan data antrian

void tambahAntrian()

{

//diatur perulangan untuk memeriksa apakah ada antrian yang kosong

int i;

for(i=0; i<MAX_ANTRIAN; i++)

{

//jika ada antrian yang kosong, maka data bisa dimasukkan

if(antrian[i].nama == "null" && antrian[i].umur == -1)

{

cout << "antrian ke-" << i+1 << " > " << endl;

cout << "masukkan nama: ";

cin >> antrian[i].nama;

cout << "masukkan umur: ";

cin >> antrian[i].umur;

break; }

//jika tidak ada yang kosong, maka tampilkan antrian penuh

else {

if (i == MAX_ANTRIAN-1) {

cout << "antrian penuh" << endl; }

}

}

system("pause"); }

Page 41: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan //prosedur untuk mengurangi pengantri pertama, lalu antrian setelahnya maju.

void kurangiAntrian()

{

int i;

//tampilkan data yang akan dihapus

cout << "antrian ke-1 telah dihapus" << endl;

cout << "nama: " << antrian[0].nama << endl;

cout << "umur: " << antrian[0].umur << endl;

//hapus data dengan mengisi "null" dan -1

antrian[0].nama = "null";

antrian[0].umur = -1;

//menggeser antrian ke atas

for(i=0; i<MAX_ANTRIAN-1; i++)

{

antrian[i].nama = antrian[i+1].nama;

antrian[i].umur = antrian[i+1].umur;

}

//mengisi antrian terakhir dengan data kosong

antrian[MAX_ANTRIAN-1].nama = "null";

antrian[MAX_ANTRIAN-1].umur = -1;

system("pause");

}

Page 42: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan

//prosedur menampilkan data semua antrian

void printAntrian()

{

int i;

for(i=0; i<MAX_ANTRIAN; i++)

{

cout << "antrian ke-" << i+1 << " > " << endl;

if(antrian[i].nama == "null" && antrian[i].umur == -1)

{

cout << "KOSONG" << endl;

}

else

{

cout << "nama: " << antrian[i].nama << endl;

cout << "umur: " << antrian[i].umur << endl;

}

}

system("pause");

}

Page 43: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 3: sambungan

//prosedur untuk menampilkan data antrian perorang

void printOrang()

{

cout << "antrian ke: ";

cin >> antri;

if(antrian[antri].nama == "null" && antrian[antri].umur == -1)

{

cout << "KOSONG" << endl;

}

else

{

cout << "nama: " << antrian[antri-1].nama << endl;

cout << "umur: " << antrian[antri-1].umur << endl;

}

system("pause");

}

Page 44: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 4: Tambah dan Hapus Antrian

//Tambah dan hapus antrian

#include <iostream>

#include <conio.h>

#include <stdlib.h>

#include <windows.h>

using namespace std;

main()

{

int cek=0,data[20],x,hapus;

char pil;

do{

cout<<"1. Tambah Antrian"<<endl;

cout<<"2. Hapus Antrian"<<endl;

cout<<"3. Lihat Antrian"<<endl;

cout<<"4.Keluar"<<endl;

cout<<endl;

cout<<"silahkan masukkan pilihan anda=";

pil=getche();

cout<<endl;

if(pil!='1'&&pil!='2'&&pil!='3'&&pil!='4')

cout<<"anda salah mengetikan inputan";

else

{

if(pil=='1')

{

if(cek==20)

cout<<"antrian penuh";

else

{

cout<<"masukkan nilai=";

cin>>x;

data[cek]=x;

cek++;

}

}

Page 45: INF202: Struktur Data ANTRIAN (QUEUE - ocw.upj.ac.idocw.upj.ac.id/files/Handout-INF202-INF202-Struktur-Data-Wayan... · Introduction to Queue • Proses antrian merupakan suatu proses

Contoh 4: sambungan else {

if(pil=='2')

{

if(cek==0)

cout<<"antrian kosong";

else

{

hapus=data[0];

for(int v=0;v<cek;v++)

data[v]=data[v+1];

data[cek-1]=NULL;

cek--;

cout<<"data dengan

nilai"<<hapus<<"terhapus";

}

getch();

}

else

{

if(pil=='3')

{

if(cek==0)

cout<<"antrian kosong";

else

{

cout<<endl;

for(int z=0;z<cek;z++)

{

cout<<"|";

cout<<" "<<data[z];

cout<<"|";

}

}

getch();

}

}

}

}

}while(pil!='4');

}