Anda di halaman 1dari 9

ALGORITMA DAN PEMROGRAMAN 2

“QUEUE”

OLEH:
Muhammad zaky shabirin
(2001301140)

Dosen Pengampu:
Winda aprianti M.Si

PROGRAM STUDI TEKNIK INFORMATIKA


POLITEKNIK NEGERI TANAH LAUT
PELIHARI
2021
Halaman Penilaian Laporan

Uraian Ya/Tidak Keterangan Nilai


Kertas A4

Huruf times new

roman size 12

Margin 4-3-3-3

(L-T-R-B)

Materi

Kebeneran listing

untuk menjawab
permasalahan
Penjelasan

listening

Kesesuaian listing

dengan hasil
running

Total Nilai
BAB I
LANDASAN TEORI

1.1 Pengertian Queue


Queue (Antrian) adalah suatu kumpulan data yang mana penambahan
data / elemen hanya dapat dilakukan pada sisi belakang sedangkan
penghapusan / pengeluaran elemen dilakukan pada sisi depan. Jenis struktur
data antrian sering digunakan untuk menstimulasikan keadaan dunia nyata.
Antrian banyak dijumpai dalam kehidupan sehari-hari. Misal : antrian registrasi
mahasiswa, tiket kereta api dan lain-lain. Berbeda dengan stack, prinsip yang
digunakan dalam antrian adalah FIFO ( First In First Out ). Dengan kata lain,
urutan keluar elemen akan sama dengan urutan masuknya.
Dalam antrian tidak semuanya dilakukan secara FIFO murni, contoh yg
relevan dalam bidang komputer adalah Time-sharing Computer System, dimana
ada sejumlah pemakai (user) yg menggunakan sistem tersebut secara serempak.
Karena sistem ini biasanya menggunakan processor, dan sebuah memory
utama. Jika processor sedang dipakai oleh seorang user, maka user yang lain
harus antri sampai gilirannya. Antrian ini tidak akan dilayani secara FIFO
murni tetapi biasanya didasarkan pada suatu prioritas tertentu. Antrian yang
memasukkan unsur prioritas dinamakan dengan ANTRIAN PRIORITAS
( PRIORITY QUEUE ).
Elemen yang pertama kali masuk ke antrian akan keluar pertama
kalinya. DEQUEUE adalah mengeluarkan satu elemen dari suatu antrian.
Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di
ujung satunya sehingga membutuhkan variabel Head dan Tail.
1.2 Deklarasi Queue Dalam Program
Sebuah queue di dalam program komputer dideklarasikan sebagai
sebuah tipe bentukan baru, di dalam Bahasa C, biasa disebut struct. Sebuah
struktur data dari sebuah queue setidaknya harus mengandung dua tiga variabel,
yakni variabel HEAD yang akan berguna sebagai penanda bagian depan
antrian, variabel TAIL yang akan berguna sebagai penanda bagian belakang
antrian dan ARRAY DATA dari yang akan menyimpan data-data yang
dimasukkan ke dalam queue tersebut
1.3 Karakteristik Queue
 Elemen antrian.
 Front (elemen terdepan antrian).
 Tail (elemen terakhir).
 Jumlah elemen pada antrian.
 Status antrian.
1.4 Operasi-operasi Queue
 EnQueue: Masukkan data ke dalam antrian.
 DeQueue: Mengeluarlan data terdepan dari antrian.
 Clear: Menghapus seluruh antrian.
 IsEmpty: Memeriksa apakah antriang kosong atau tidak.
 IsFull: Memeriksa apakah antrian penuh atau tidak.

1.5 Operasi-operasi standar pada Queue adalah:


 membuat queue atau inisialisasi.
 mengecek apakah queue penuh.
 mengecek apakah queue kosong.
 memasukkan elemen ke dalam queue atau InQueue (Insert Queue).
 Menghapus elemen queue atau DeQueue (Delete Queue).
1.6 Perbedaan Queue dan Stack
 sementara queue memakai sistem FIFO (first in first out), yang apabila
kita menghapus atau mengeluarkan data, maka data yang pertamalah
yang akan terhapus atau keluar terdahulu dan data yang terakhir akan
terhapus atau keluar terakhir.
 sedangkan stack memakai sistem LIFO (last in first out) apabila kita
menghapus atau keluar data, maka data yang terakhirlah yang akan
tehapus atau keluar terlebih dahulu.
BAB I
HASIL PRAKTIKUM
2.1 QUEUE
a) Listing Program
#include <iostream>
#define MAX 20 //maksimum data queue
using namespace std;

//Deklarasi struct antrian


struct Queue {
int front, rear, data[MAX];
}Q;

//cek apakah antrian penuh


bool isFull() {
return Q.rear == MAX;
}

//cek apakah antrian kosong


bool isEmpty() {
return Q.rear == 0;
}

//Menampilkan Queue
void printQueue() {
if (isEmpty()) {
cout << "Antrian kosong"<<endl;
}
else {
cout << "QUEUE : ";
for (int i = Q.front; i < Q.rear; i++)
//menambahkan koma jika data tidak terdapat di antrian
pertama
cout << Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
cout << endl;
}
}

//manambahkan data ke antrian


void enqueue() {
if (isFull())
{
cout << "Antrian penuh!"<<endl;
}
else {
int data;
//menambahkan data ke antrian
cout << "Masukkan Data : ";cin >> data;
Q.data[Q.rear] = data;
//menempatkan tail pada elemen data terakhir yang
ditambahkan
Q.rear++;
cout << "Data ditambahkan\n";
printQueue();
}
}

// mengambil data dari antrian


void dequeue() {
if (isEmpty())
{
cout << "Antrian masih kosong"<<endl;
}
else{
cout << "Mengambil data \"" << Q.data[Q.front] << "\"..."
<< endl;
//menggeser antrian data ke head
for (int i = Q.front; i < Q.rear; i++)
Q.data[i] = Q.data[i + 1];
//menempatkan tail pada data terakhir yang digeser
Q.rear--;
printQueue();
}
}

int main() {
int choose;
do
{
//Tampilan menu
cout << "-------------------\n"
<< " Menu Pilihan\n"
<< "-------------------\n"
<< " [1] Enqueue \n"
<< " [2] Dequeue\n"
<< " [3] Keluar \n\n"
<< "-------------------\n"
<< "Masukkan pilihan : "; cin >> choose;
switch (choose)
{
case 1:
enqueue();
break;
case 2:
dequeue();
break;
default:
cout << "Pilihan tidak tersedia";
break;
}
} while (choose !=3);
return 0;
}
b) Hasil Running

Anda mungkin juga menyukai