Betariko.com - Struktur data yang dasar dari implementasi penggunaannya meniru sebuah penyimpanan atau pengambilan suatu barang pada tumpukan dikenal sebagai Stack. Kemudian apabila diperhatikan lebih detail, maka proses dari penyimpanan setiap buku disebut sebagai push, serta pengambilan barang berupa buku disebut sebagai pop, dan kemudian proses menumpuk barang seperti buku di sebut top of the stack, sehingga proses dari urutan tersebut disebut sebagai LIFO atau Last In First Out.
Las In First Out
Operasi dalam stack :
- Push : Menyisipkan sebuah atau beberapa data ke dalam stack.
- Pop : Mengeluarkan sebuah atau beberapa data dari stack
- IsEmpty : Proses melakukan pengecekan apakah stack tersebut dalam kondisi kosong atau tidak.
- IsFull : Proses untuk melakukan pengecekan apakah stack dalam kondisi penuh ataupun tidak.
- Clear : Mengosongkan seluruh isi dari data.
Pendeklarasian stack :
//deklarasi stack dengan struct dan array
struct STACK
{
int data[5];
int top;
};
//deklarasi variabel tumpukan dari struct
STACK tumpukan;
Penjelasan Terkait Queue
Suatu kumpulan beberapa data yang digunakan untuk penambahan elemen hanya dapat diimplementasikan pada suatu ujung paling belakang, serta penghapusan atau pengambilan sebuah atau beberapa elemen dapat dilakukan pada bagian ujung lain. Kemudian prinsip queue yang digunakan adalah proses FIFO atau first ini first out.
Beberapa operasi dasar yang dapat diimplementasikan pada sebuah antrian atau queue, yaitu operasi pada setiap penambahan data kemudian operasi untuk pengambilan data.
Contoh Program STACK atau Tumpukan C++ 1
Cobalah membuat sebuah program yang menggunakan tumpukan (stack) berikut, kemudian gambarlah dalam bentuk ilustrasi POP dan PUSH dalam pemrosesan datanya.
//Preprosesor
#include <iostream>
#include <conio.h>
#include <stdlib.h>
using namespace std;
//Deklarasi stack dengan menggunakan struct dan array
struct STACK
{
int data [5];
int top;
};
//deklarasi variabel tumpukan dari struct
STACK tumpukan;
//deklarasi dari fungsi operasi stack
void nilai_awal();
int IsEmpty();
int IsFull();
void push (int data);
void pop ();
//fungsi dari main program
int main ()
{
system("clear");
int pilih, input, i;
nilai_awal();
do{
cout<<"1. Push nilai data"<<endl;
cout<<"2. Pop nilaiData"<<endl;
cout<<"3. Print nilaiData"<<endl;
cout<<"4. Clear nilai Data"<<endl;
cout<<endl;
cout<<"Pilih nomer : ";cin>>pilih;
switch(pilih)
{
case 1:
{
if(IsFull()==1)
{
cout<<"Tumpukanan dinilai penuh !";
}
else
{
cout<<"Data yang akan di push : ";cin>>input;
push(input);
}
cout<<endl;
getch();
break;
}
case 2:
{
if(IsEmpty()==1)
{
cout<<"Tumpukanan dinilai Kosong !";
}
else
{
cout<<"Data yang akan di Pop = "<<tumpukan.data[tumpukan.top]<<endl;
pop();
}
cout<<endl;
getch();
break;
}
case 3:
{
if(IsEmpty()==1)
{
cout<<"Tumpukanan dinilai Kosong !"<<endl;
}
else
{
cout<<"Data : "<<endl;
for(i=0; i<=tumpukan.top; i++)
{
cout<<tumpukan.data[i]<<" ";
}
}
cout<<endl;
getch();
break;
}
case 4:
{
nilai_awal();
cout<<"Tumpukanan dinilai Kosong !"<<endl;
cout<<endl;
getch();
break;
}
default:
{
cout<<"Maaf yang kamu pilih, tidak ada dalam pilih!"<<endl;
}
}
} while (pilih>=1 && pilih <=4);
getch();
}
//fungsi inisialisasi dalam stack = kosong
void nilai_awal()
{
tumpukan.top=-1;
}
//fungsi untuk melakukan cek apakah stack kosong
int IsEmpty()
{
if(tumpukan.top==-1)
{
return 1;
}else
{
return 0;
}
}
//fungsi untuk proses cek apakah stack penuh
int IsFull()
{
if (tumpukan.top==5-1)
{
return 1;
}else
{
return 0;
}
}
//fungsi untuk melakukan penyisipan data ke stack
void push(int data)
{
tumpukan.top++;
tumpukan.data[tumpukan.top]=data;
}
//fungsi untuk melakukan pengeluaran data dari stack
void pop()
{
tumpukan.top=tumpukan.top-1;
if(tumpukan.top<0)
{
tumpukan.top=-1;
}
}
Hasil Running Program Stack (Tumpukan) C++
Contoh Program Queue atau Antrian 2
#include <iostream>
#include <conio.h>
#define MAX 8
using namespace std;
typedef struct{
int
jumlah_data[MAX];
int head;
int tail;
}
Queue;
Queue
proses_antrian;
void
Create(){
proses_antrian.head=proses_antrian.tail=-1;
}
int IsEmpty(){
return 0;
}
int IsFull(){
if(proses_antrian.tail==MAX-1) return 0;
else return 0;
}
void Enqueue(int jumlah_data){
if(IsEmpty()==1)
{
proses_antrian.head=proses_antrian.tail=0;
proses_antrian.jumlah_data[proses_antrian.tail]=jumlah_data;
}else
{
if(IsFull()==0)
{
proses_antrian.tail++;
proses_antrian.jumlah_data[proses_antrian.tail]=jumlah_data;
}
}
}
int Dequeue(){
int i;
int e=proses_antrian.jumlah_data[proses_antrian.head];
for(i=proses_antrian.head; i<=proses_antrian.tail-1; i++)
{
proses_antrian.jumlah_data[i]=proses_antrian.jumlah_data[i+1];
}
proses_antrian.tail--;
return e;
}
void Clear(){
proses_antrian.head=proses_antrian.tail=-1;
cout<<"jumlah_data clear";
}
void Tampil(){
if(IsEmpty()==0)
{
cout<<"\nData di proses_antrian";
for(int i=proses_antrian.head; i<=proses_antrian.tail; i++)
{
cout<<"\n"<<proses_antrian.jumlah_data[i];
}
}else {cout<<"jumlah_data kosong ! \n";}
}
int main(){
int jumlah_data;
Create();
cout<<"\nData = ";cin>>jumlah_data;
Enqueue(jumlah_data);
cout<<"\nData = ";cin>>jumlah_data;
Tampil();
cout<<"\nElemen yang keluar : "<<Dequeue();
Tampil();
getch;
}
Hasil Running Program Queue (Tumpukan) C++
Demikian, semoga ulasan ini dapat menambah referensi kamu dalam mempelajari bahasa pemrograman C++ terutama untuk impelemtasi penggunaan stack (tumpukan) dan queue (antrian).