May 9, 2007 at 5:19 am | In Informatic |
Merupakan 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
# include
# include
# 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<
# include
# include
# define alamat Elemen*
# include
//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;
}
Tidak ada komentar:
Posting Komentar