Skip to main content

QUEUE ( ANTREAN ) dalam C++

1. PENGERTIAN QUEUE (ANTREAN)

Queue adalah suatu bentuk khusus dari linear list, 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. Sebagai contoh dapat kita lihat antrean (Q1, Q2,...,QN). Kita notasikan bagian depan dari antrean Q sebagai FRONT(Q) dan bagian belakang sebagai REAR(Q). Jadi untuk antrean Q = [Q1, Q2, …, QN] : FRONT(Q) = Q1 dan REAR(Q) = QN

Kita menggunakan notasi NOEL(Q) untuk menyatakan jumlah elemen di dalam antrean Q. NOEL(Q) mempunyai harga integer. Untuk antrean Q = [Q1,Q2,…, QN], maka NOEL(Q) = N. Operator penyisipan (insertion) disebut INSERT dan operator penghapusan (deletion) disebut REMOVE.

2. OPERASI DASAR PADA ANTREAN

Ada 4 operasi dasar yang dapat dilakukan pada struktur data antrean, yakni :

1. CREATE (antrean) :

CREATE(Q) adalah suatu operator untuk membentuk dan menunjukkan suatu antrean hampa Q.
Berarti :
NOEL(CREATE(Q)) = 0
FRONT(CREATE(Q)) = tidak terdefinisi
REAR(CREATE(Q)) = tidak terdefinisi

2. ISEMPTY (antrean)


ISEMPTY(Q) adalah operator yang menentukan apakah antrean Q hampa atau tidak. Operand dari operator ini merupakan antrean, sedangkan hasilnya merupakan tipe data boolean.
Di sini :
ISEMPTY(antrean) = true, jika Q hampa, yakni jika NOEL(Q)=0 = false, dalam hal lain. Maka, ISEMPTY(CREATE(Q)) = true.

3. INSERT (elemen, antrean)

INSERT(E,Q) adalah operator yang memasukkan elemen E ke dalam antrean Q. Elemen E ditempatkan di bagian belakang dari antrean. Hasil dari operasi ini adalah antrean yang lebih panjang.
REAR(INSERT(E,Q)) = E
QNOEL adalah E
ISEMPTY(INSERT(E,Q)) = false


4. REMOVE (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, yakni suatu underflow. Jelas bahwa REMOVE(CREATE(Q)) juga memberikan kondisi underflow
error.

Contoh Program :


#include <iostream.h>
#include <conio.h>

class Linked_list_Queue
{
private:
struct node
{
int data;

node *next;
};

node *rear;
node *entry;
node *print;
node *front;

public:
Linked_list_Queue();

void Delete();
void insert();
void print_list();
void show_working();
};

Linked_list_Queue::Linked_list_Queue()
{
rear=NULL;
front=NULL;
}
//***********************************************
//-------------- Insert() ---------------------
//***********************************************

void Linked_list_Queue::insert()
{
int num;
cout<<"\n\n\n\n\n\t Masukkan angka dalam Queue : ";
cin>>num;

entry=new node;
if (rear==NULL)
{
entry->data=num;
entry->next=NULL;
rear=entry;
front=rear;
}
else
{
entry->data=num;
entry->next=NULL;
rear->next=entry;
rear=entry;
}
cout<<"\n\n\t *** "<<num<<" sudah masuk dalam Queue."<<endl;
cout<<"\n\n\n\t\t Pres any key to return Menu. ";
getch();
}

//***********************************************//
//-------------- Delete() --------------------- //
//***********************************************//

void Linked_list_Queue::Delete()
{
if (front==NULL)
cout<<"\n\n\n\t *** Error : Queue is empty. \n"<<endl;
else
{
int deleted_element=front->data;
node *temp;
temp=front;
front=front->next;
delete temp;

cout<<"\n\n\n\t*** "<<deleted_element<<" dihapus dari Queue."<<endl;
}
cout<<"\n\n\n\t\t Pres any key to return Menu.";
getch();
}

//***********************************************
//-------------- print_list() ---------------------
//***********************************************

void Linked_list_Queue::print_list()
{
print=front;
if(print!=NULL)
cout<<"\n\n\n\n\n\t Angka - angka yang ada dalam queue adalah : \n"<<endl;
else
cout<<"\n\n\n\n\n\t *** Tidak ada yang ditampilkan."<<endl;
while(print!=NULL)
{
cout<<"\t"<<print->data<<endl;
print=print->next;
}
cout<<"\n\n\n\t\t Pres any key to return Menu.";
getch();
}

//***********************************************
//-------------- show_working() ---------------------
//***********************************************

void Linked_list_Queue::show_working()
{
char Key=NULL;
do
{
clrscr();

gotoxy(5,5);
cout<<"****Implementation of Linked List as a Queue****"<<endl;

gotoxy(10,8);
cout<<"Pilih salah satu menu : "<<endl;

gotoxy(15,10);
cout<<"-Press\'I\' to Masukkan data dalam queue"<<endl;

gotoxy(15,12);
cout<<"-Press\'D\' to Hapus data dari queue"<<endl;

gotoxy(15,14);
cout<<"-Press\'T\' to Tampilkan data dari queue"<<endl;

gotoxy(15,16);
cout<<"-Press\'E\' to Exit"<<endl;

input:

gotoxy(10,20);
cout<<" ";

gotoxy(10,20);
cout<<"Masukkan pilihan : ";

Key=getche();
if (int(Key)==27 || Key=='e' || Key=='E')
break;

else if(Key=='i' || Key=='I')
insert();

else if (Key=='d' || Key=='D')
Delete();

else if (Key=='t' || Key=='T')
print_list();

else
goto input;
}
while(1);
}

//********************************************
//--------------- main() --------------------
//********************************************

int main()
{

Linked_list_Queue obj;
obj.show_working();
return 0;
}

Comments

Post a Comment

Popular posts from this blog

Menghitung Volume Bangun Ruang Dengan PHP

Dalam kesempatan kedua ini saya akan sharing tugas saya yang kedua. yaitu pemrograman PHP, Di dalam tugas ini mahasiswa disuruh menampilkan Volume Bola, kerucut dan kubus.Dengan ketentuan jari-jari,tinggi,sisi yang sudah ditentukan. Untuk lebih jelasnya silahkan lihat dan pelajari program dan outputanya dibawah ini : <? $phi=3.14; $r=7; $t=14; $s=10; $volbola=(4/3)*$phi*$r*$r*$r; $volkerucut=(1/3)*$phi*$r*$r*$t; $volkubus=$s*$s*$s; echo"========================================="; echo"<br/>"; echo"Nama = Fauzan Vega Saputra"; echo"<br/>"; echo"Kelas = TI_B"; echo"<br/>"; echo"NIM = 3085111136"; echo"<br/>"; echo"========================================="; echo"<br/>"; echo"| Menghitung Volume Bola, Kerucut dan Kubus |"; echo"<br/>"; echo"========================================="; echo"<br/>"; echo"

Program Konversi Uang Dengan Delphi

Pertama-tama wajib mendownload delphi 7, cari aja di mbah google pasti ada banyak banget. Setelah download selesai, install di kompi atau laptop anda, kalau dah punya delphi 7 gak diwajibkan untuk download, siapkan aja ember,gayung dan air, cari dikamar mandi jangan di mbah google.. xixixxi bingung ya kok pake ember,gayung dan air???? yaiaylah orang aku boongin,,, ckckckck udah deh bercandanya sekarang serius.... Langkah pembuatan program : 1. Jalankan Delphi 7 2. Pada kotak objek inspector terdapat 2 baris dan banyak kolom. pada kolom color isi dengan warna kesukaan anda. Disini saya contohkan dengan warna "clAqua" 3. Pada kolom caption "Form1" ganti dengan "konversi uang" 4. Tambahkan label,edit,dan button pada form konversi uang, dengan mengeklik simbol "A","OK","AB|" pada bagian atas lalu klik kan ke form konversi uang. lihat gambar dibawah : 5. dan di atur letaknya seperti gambar dibawah ini: 6. Untuk me

Program java Menghitung Bangun Kerucut & Tabung

Didalam program ini user menginputkan tinggi dan jari - jari untuk bangun A dan bangun B. kemudian program mengeksekusinya sehingga akan di ketahui luas permukaan dan volume bangun A maupun bangun B, sesuai tinggi dan jari - jari yang telah di inputkan. Berikut contoh programnya : import java.io.*; class fauyan {     double r,s,t;     double phi = 3.14;     double volumekerucut, volumetabung;     double luaskerucut, luastabung; /* Email  : f_zan.hack@yahoo.com Web   : fzan-aquana.blogspot.com             fauzanvs.blogspot.com */     void hitung() {         luaskerucut = (phi * r) * (s + r);         luastabung = (phi* r * 2) * (t + r);         System.out.println(" ");         System.out.println("  Luas Permukaan Kerucut : " +luaskerucut +" cm^2");         System.out.println("  Luas Permukaan Tabung : " +luastabung +" cm^2");         System.out.println(" ");         volumekerucut = (phi * r * r * t) / 3;