Senin, 11 Maret 2019

QUEUE (ANTRIAN) C++

Implementasi Queue di C++

Queue atau antrian merupakan suatu kumpulan data yang memiliki head/front dimana data dikeluarkan (dequeue) dan tail/rear dimana data dimasukkan (enqueue) ke antrian.

Proses QUEUE

Seperti halnya pada antrian yang biasa kita lakukan sehari-hari, di manapun. Antrian dimulai dari depan ke belakang, jika didepan belum pergi meninggalkan antrian maka antrian terus bertambah dari belakang dan antrian paling belakang disini dinamakan rear/tail.
Jadi selama antrian terus bertambah (enqueue) maka antrian yang paling akhir adalah tail/rear.
Operasional Queue

1. Preprocessor dan Header File

#include <iostream>
#define MAX 20 //maksimum data queue
using namespace std;
2.Prosedur enqueue (menambahkan antrian)
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]);
    }
    else if(IsFull() == 0)
    {
        antrian.tail = antrian.tail + 1;
        antrian.data[antrian.tail] = data;
        printf("%d masuk !", antrian.data[antrian.tail]);
    }
}
3.Prosedur dequeue(mengeluarkan atau membuang sebuah data/ nilai)
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;
}
4.Tampil(menmpilkan semua data yang ada dalam antrian)
void Tampil()
{
    if (IsEmpty()==0)
    {
        for (int i=antrian.head;i<=antrian.tail; i++)
        {
            printf("%d ",antrian.data[i]);
        }
    }
    else
    {
        printf("Data Kosong\n");
    }
}
5.clear (membersihkan semua daftar antrian)
void Clear()
{
    antrian.head = antrian.tail = -1;
    printf("Data Clear");
}

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]);
    }
    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:
            return 0;
            break;
    }
    getch();
    } while(pil!=5);
}
Sebenarnya di C++ sudah ada library untuk membuat queue, jadi untuk membuat queue kita cukup menambahkan header file queue pada awal baris dan selanjutnya kita bisa menggunakan method dan fungsi yang telah disediakan untuk membuat antrian seperti emptysizefrontbackpush_backpop_front dan lainnya.
Program kita disini hanya untuk mempelajari dasar dari queue itu sendiri, jadi mungkin banyak sekali perbedaan dengan yang ada di library. Nah, jangan sungkan untuk menyalin, memodifikasi dan mempelajari program yang telah kita buat diatas, dan mohon gunakan untuk kebaikan ya.

referansi

https://www.geeksforgeeks.org/queue-cpp-stl/




























Tidak ada komentar:

Posting Komentar

Modul Debian 2