Queue (antrian)
May 9, 2007 at 5:19 am | In Informatic | 12 CommentsMerupakan kumpulan data yang penambahan elemennya hanya bisa dilakukan pada sisi belakang dan penghapusannya hanya bisa dilakukan pada sisi depan. Konsep utamanya berkebalikan dari stack (tumpukan), yaitu First In First Out. Contoh : orang antri beli tiket ke kebun binatang, Mahasiswa antri bayar KRS. Implementasi antrian menggunakan dua pointer, yaitu pointer yang menunjukkan elemen terdepan dan elemen terakhir
Operasi antrian
1. Menambah elemen baru pada bagian belakang antrian
2. Menghapus elemen baru pada bagian depan antrian
3. Melakukan pengecekan apakah antrian kosong. tidak mungkin menghapus antrian yang sudah kosong.
CONTOH PROGRAM USING C++ :
unit antrih.h
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
# define alamat Elemen*
// inisialisasi type data dan variable serta fungsi yang dibutuhkan
typedef char tInfo;
typedef struct Elemen
{
tInfo Info;
alamat Berikut;
}tElemen;
typedef struct tagAntrian
{
alamat kepala;
alamat ekor;
} Antrian;
void inisialisasi(Antrian* Q);
void enQueue(Antrian* Q, tInfo info);
void deQueue(Antrian* Q, tInfo* Info);
int queueKosong (Antrian Q);
//insisialisasi antrian
void inisialisasi(Antrian* Q)
{
Q->kepala = NULL; //kepala antrian bernilai null;
Q->ekor = NULL; //ekor antrian bernilai null;
}
// Operasi enqueue
void enQueue(Antrian* Q, tInfo info)
{
alamat P; // tipe data P adalah alamat
P = new Elemen; //(alamat) malloc(sizeof(alamat));
if (queueKosong(*Q))
{
P->Info = info; //elemen Info berisi info
P->Berikut = NULL; //elemen Berikut bernilai null
Q->ekor = P; // ekor antrian berisi P
Q->kepala = Q->ekor; // kepala antrian berisi ekor antrian
}
else
{
P->Info = info;
P->Berikut = NULL;
Q->ekor->Berikut = P; //ekor antrian berikut bernilai P
Q->ekor = P; //ekor antrian berisi P
}
}
// Operasi dequeue
void deQueue(Antrian* Q, tInfo* Info)
{
alamat P;
P = Q->kepala;
*Info = P->Info;
if ((Q->kepala) == (Q->ekor))
{
Q->kepala = NULL;
Q->ekor = NULL;
}
else
{
Q->kepala = Q->kepala->Berikut;
// kepala antrian berisi kepala antrian berikutnya
}
free(P);
cout<<endl;
}
//
int queueKosong(Antrian Q){
return ((Q.kepala==NULL) && (Q.ekor==NULL));
}
unit antrih.cpp
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
# define alamat Elemen*
# include <antrih.h>
//untuk menampilkan antrian
void tampilQueue(Antrian Q)
{
alamat P = Q.kepala;
cout << “Isi queue : “;
while ((P!=NULL)) {
cout << P->Info << ” – “;
P = P->Berikut;
}
cout << “\n”;
}
// untuk mencetak menu
void cetakMenu(){
cout << “***CONTOH ANTRIAN***”;
cout << “\n 1. Tambah elemen\n”;
cout << “ 2. Hapus elemen\n”;
cout << “ 3. Cetak antrian\n”;
cout << “ 4. Selesai\n\n”;
}
// Program utama
int main()
{
Antrian Q;
int selesai;
int pilMenu;
tInfo elm;
inisialisasi(&Q);
selesai = 0;
do
{
clrscr;
cetakMenu();
cout << “Menu yg dipilih : “;
cin >> pilMenu;
switch(pilMenu) {
case 1 : cout << “\nMasukkan elemen yg ditambahkan : “;
cin >> elm;
enQueue(&Q,elm);
break;
case 2 : if (queueKosong(Q))
{
cout << “\nAntrian kosong, tidak bisa dihapus\n”;
}
else
{
deQueue(&Q, &elm);
cout << “\nElemen yang dihapus : ” << elm << “\n”;
}
break;
case 3 : tampilQueue(Q);
break;
default : selesai = 1;
}
}
while ( !selesai );
return 1;
}
12 Comments »
RSS feed for comments on this post. TrackBack URI
Leave a comment
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.
assalamu’alaikum,,
(panggilannya ukhti iing? )
suka struktur data ya?
calon programmer wanita ini sepertinya..
Subhanalloh,, jarang lho.
oce deh,, tetep semangat ya ukhti.
Salam kenal ya
*
-ukhti phu-
*identitas samaran termasuk bo’ong gag ya
Comment by phu — May 20, 2007 #
assalamualaikum,,,
salut banget buat ukhti yang mau belajar pemrograman,
ngomong2, aku juga lagi belajar struktur data, tapi kata teman-temanku sulit banget..
sekalian mau nanya. rumus queue yang sudah ada di web ini kalo dicoba pake visual C++, jalan gak? soalnya kami lagi belajar kelompok tapi kok ada gak jalan nih,,, tolong dijelasin ya?
Comment by eli — July 3, 2007 #
alaykumsalam..
wah kl nyoba di visual c++ belum pernah mbak..ini cuma contoh program saja using C++. tapi kan algoritma queue nya sama..jadi ya tinggal di seseuaikan ma bahasa apa yang akan anda pakai.. rumusnya sama ko mbak.. selamat mencoba..
Comment by ienx — July 3, 2007 #
Wah, jadi inget waktu pertama kali coding
Comment by Armand — December 7, 2007 #
boss tolong donk aku minta contoh program antrian
pembayaran/penetoran rekening..
kalo ada ya boss,soalnya aku pengen program itu.
Comment by Aria — November 28, 2008 #
saya gak ada..lha itu tinggal di edit sahaja jadi pembayaran rekening.. ditambahi dikit gitu bwt user interfacenya biar kelihatan klo pembayaran rekening..
Comment by ienx — November 30, 2008 #
thx ya infonya…
Comment by ferry — December 1, 2008 #
assalamualaikum ukhti,,,
jazakallah ya ukh voo info na,,,
ehm… cln programmer niy,,,
salam ukhuwah
wslm..
Comment by ukhti.andriy — December 2, 2008 #
assalammualaikum ukhti…
jago struktur data iah????
biza minta tolong gag???
tolong dong saya dibuatkan program queue tentang Antrian Pendaftaran SPMB!!!!
coz kami lagi ada tugas proyek neyh…
kami bingung banged
harap bantuannya secepatnya iah b4 12 Dec 08!!!!
reply in my mail…..
as soon as possible
Comment by fhia — December 2, 2008 #
maz, blh mnta contoh program antrian pembelian di cafe.
Comment by edo — December 4, 2008 #
assalamualaikum ukhti
ukhti,bleh minta bantuannya g?
boleh mnta syntax program queue tpi yang pendek aja.coz q ge belajar pke c++,bingung kalo programnya panjang2.heheehhe…..
biar mudah paham,gt.
makasih sebelumnya.
wass
Comment by rama — December 25, 2008 #
Soal
1. Buatlah suatu program Animasi Antrian Melingkar 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
tolong di jawab ya.makasih
Comment by noko — January 16, 2009 #