Anda di halaman 1dari 6

Queue atau antrian adalah suatu kumpulan data yang penambahan elemennya

hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear),
dan penghapusan atau pengambilan elemen dilakukan lewat ujung yang lain
(disebut dengan sisi depan atau front)
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana
penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan
sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat
ujung lain (disebut dengan sisi depan atau front) Queue atau antrian prinsip
yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In
First Out). Queue atau antrian banyak kita jumpai dalam kehidupan seharihari,
ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh
lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu(time-sharing
computer system) dimana ada sejumlah pemakai yang
akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan
satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head
dan Tail ( depan/front, belakang/rear).
Karakteristik Queue atau antrian :
1. elemen antrian
2. front (elemen terdepan antrian)
3. tail (elemen terakhir)
4. jumlah elemen pada antrian
5. status antrian Operasi pada Queue atau antrian

// Program Queque

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
struct node
{
int data;
struct node *p;
};
void TambahElemen (struct node **d, struct
node **b, int nilai)
{ struct node *temp;
temp = (struct node*) malloc (sizeof
(struct node));
temp -> data = nilai;
temp -> p = NULL;
if (*d == NULL)
{
*d = temp;
}
else
{
(*b) -> p = temp;
}
*b = temp;
}

void HapusElemen (struct node **d, struct


node **b)
{
struct node *temp;
if (*d == NULL)
{
printf ("Tidak terdapat elemen dalam
queue");
}
else
{
temp = *d;
*d = temp -> p;
free (temp);
if (*d == NULL)
{
*b = NULL;
}
}
}
void TampilkanNilai (struct node *d)
{
int nilai;
while (d != NULL)
{
nilai = d -> data;
printf ("%d\n", nilai);
d = d -> p;
}
}
int main (void)
{
struct node *depan, *belakang;
depan = belakang = NULL;
TambahElemen (&depan, &belakang, 10);
TambahElemen (&depan, &belakang, 20);
TambahElemen (&depan, &belakang, 30);
TambahElemen (&depan, &belakang, 40);
TampilkanNilai (depan);
HapusElemen (&depan, &belakang);
printf ("Nilai - nilai didalam queue");
printf ("Setelah penghapusan elemen
pertama : \n");
TampilkanNilai (depan);
return 0;
}
STACK/Tumpukkan
Stack adalah kumpulan suatu elemen dimana hanya elemen yang baru dimasukkan yang
dapat diakses atau dilihat. Stack merupakan perintah pengumpulan data secara linear yang
menyusun data seperti tumpukan dan bersifat Last In First Out(LIFO) yang berarti data
yang terakhir masuk adalah data yang pertama keluar. Contoh dalam Kehidupan seharihari
:
Setumpuk koran, dimana koran yang paling terakhir ditambahkan dan ditaruh diatas
adalah koran yang dapat dilihat Seseorang yang sedang mencuci piring, piring yang dicuci
pertama pasti akan diletakan dibawah dan akan terus berlanjut sampai tumpukan piring
yang terakhir dicuci. Lalu, piring pasti akan di taruh di rak piring dan pasti yang diambil
adalah piring yang paling diambil adalah piring yang paling atas yaitu piring yang terakhir
dicuci dan yang pertama dicuci pasti akan terakhir. Tumpukan Batu bata yang sedang
diturunkan dari mobil pasti yang diambil adalah batu bata yang paling atas, padahal batu
bata pertama yang dimasukkan kedalam mobil adalah batu bata yang berada dibawahnya.,
Stack yaitu sebuah koleksi objek yang menggunakan prinsip LIFO(Last In First Out) dan
Stack dapat diimplementasikan sebagai representasi berkait atau kontinyu.
Ciri-Ciri Stack diantaranya : Elemen TOP/Puncak diketahui Penyisipan dan Penghapusan
selalu dilakukan di TOP LIFO(Last In First Out)
Pemanfaatan Stack yaitu : Perhitungan Ekspresi Aritmatitika (posfix) Algoritma
Backtracking (runut balik)
Operasi Stack yang biasa digunakan diantaranya yaitu : Push untuk memasukkan atau
menginputkan data Pop untuk mengeluarkan data IsFull untuk mengetahui jika tumpikan
sudah penuh IsEmpety untuk mengetahui

Program Sederhana Stack/tumpukan


#include <conio.h>
#include <string.h>
using namespace std;
struct tumpukan
{
char data[15][100], max[15];
int i, j;
} stack;
void push()
{
stack.i++;
cout << "Masukan data : ";
cin >> stack.max;
strcpy (stack.data[stack.i], stack.max);

}
void pop()
{
if (stack.i > 0)
{
cout << "data yang terambil : " << stack.data[stack.i] << endl;
stack.i--; stack.j--;
}
else
cout << "tak ada data yang terambil" << endl;
}
void view (int n) //print untuk menampilkan data
{
if (stack.j > 0) //menampilkan isi data menggunakan perulangan for
{
for (int e = n; e >= 1; e--)
{
cout << stack.data[e] << endl;
}
}
else
cout << "tak ada data tersimpan" << endl; //jika tidak ada data
}

void clear() //clear untuk menghapusdata


{
stack.j = 0; stack.i = 0; //perintah untuk menghapus keseluruhan data
}
main (void)
{
int n, pilih;
ayo:
cout << "Contoh program stack (tumpukan)\n";
stack.data[n];
stack.i = 0;
stack.j = 0;
balik: //fungsi goto
cout << "\n1. push\n2. pop\n3. view\n4. clear\n5. quit\n";
cout << "\npilih : "; cin >> pilih;
cout << "\n";
if (pilih == 1) //pemilihan pilihan menggunakan if
{
if (stack.j < n)
{
stack.j++; push();
}

else
{
cout << "tumpukan penuh" << endl;
getch();
}
goto balik;
}
else
if (pilih == 2)
{
pop (); getch(); goto balik;
}
else
if (pilih == 3)
{
view (stack.i); getch(); goto balik;
}
else
if (pilih == 4)
{
clear(); getch(); goto balik;
}
else
if (pilih == 5)
{

getch(); goto ayo;


}
else
{
cout << "Input anda masukan salah !!!";
getch(); goto ayo;
}
}

Anda mungkin juga menyukai