QUEUE (Antrian)
1. Pengertian Queue
Queue dapat diartikan sebagai antrian.
Queue merupakan kumpulan data dengan penambahan data hanya melalui satu sisi,
yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan (head). Eleman
yang pertama kali masuk ke dalam queue disebut elemen depan (front/head of
queue), sedangkan elemen yang terakhir kali masuk ke queue disebut elemen
belakang (rear/tail of queue).
Ada beberapa istilah yang harus
diketahui dalam queue, yaitu:
a.
Head/Front, yaitu elemen terdepan dari queue
b.
Tail/Rear, yaitu elemen terakhir dari queue
c.
Enqueue, yaitu
meletakkan sebuah elemen pada Tail/Rear
d.
Dequeue, yaitu
menghapus/mengeluarkan elemen pada Head/Front
e.
IsEmpty, yaitu
fungsi yang digunakan untuk mengecek apakah queue
kosong
f.
IsFull, yaitu
fungsi yang digunakan untuk mengecek apakah queue
sudah penuh
2. Contoh Program
|
#include
<stdio.h>
#include <stdlib.h> #include <conio.h> #define MAX 5 #include <iostream> using namespace std; typedef struct { int data [MAX]; int head; int tail; }Queue; Queue antrian; void Create() { antrian.head=antrian.tail=-1; } int IsEmpty() { if(antrian.tail==-1) return 1; else return 0; } int IsFull() { if(antrian.tail==MAX-1) return 1; else return 0; } void Enqueue(int data)//menginput sebah dta { if(IsEmpty()==1) { antrian.head=antrian.tail=0; antrian.data[antrian.tail]=data; printf("%d Data Telah Masuk !",antrian.data[antrian.tail]); // void Tampil(); // { // if(IsEmpty()==0) // { // for(int i=antrian.head;i<=antrian.tail;i++) // { // printf("%d ",antrian.data[i]); // } // } // else // printf("Data Kosong !\n"); // } } else if(IsFull()==0) { antrian.tail=antrian.tail+1; antrian.data[antrian.tail]=data; printf("%d masuk !", antrian.data[antrian.tail]); } } int Dequeue() { int i; int e=antrian.data[antrian.head]; for(i=antrian.head;i<=antrian.tail-1;i++) { antrian.data[i]=antrian.data[i+1]; } antrian.tail--; return e; } void Clear() { antrian.head=antrian.tail=-1; printf("Data Clear"); } void Tampil() { if (IsEmpty()==0) { for (int i=antrian.head;i<=antrian.tail; i++) { printf("%d ",antrian.data[i]); } } else { printf("Data Kosong\n"); } } int main() { int pil; int data; Create(); do { system("cls"); printf ("\n MENU PILIHAN PROGRAM QUEUE\n"); printf ("1. Enqueue\n"); printf ("2. Dequeue\n"); printf ("3. Tampil\n"); printf ("4. Clear\n"); printf ("5. Keluar\n"); printf ("Masukkan Pilihan Anda : "); scanf("%d",&pil); switch(pil) { case 1: printf("Data : "); scanf("%d",&data); Enqueue(data); break; case 2: printf("Elemen yang keluar : %d", Dequeue()); break; case 3: Tampil(); break; case 4: Clear(); break; case 5: break; } getch(); } while(pil!=5); } |
0 komentar:
Posting Komentar