Loading...
Home » » Stack (TumpUkan) pada C++

Stack (TumpUkan) pada C++

Posted by TeknoBlog on Saturday, 1 July 2017

Stack

Stack adalah suatu tumpukan dari benda. Konsep utamanya adalah LIFO (Last In First
Out), benda yang terakhir masuk dalam stack akan menjadi benda pertama yang dikeluarkan
dari stack. Pada ganbar di bawah ini bisa kita lihat jika kita ingin mengambil suatu data dari
tumpukan maka kita harus mengambil data paling atas dahulu kemudian selanjutnya data
yang berada di bawahnya dan seterusnya sampai data yang paling bawah yang pertama kali
dimasukan.

A.  Operasi Pada Stack
Di C++, ada dua cara penerapan prinsip stack, yakni dengan array dan linked list. Setidaknya stack haruslah memiliki operasi-operasi sebagai berikut:
- Push: digunakan untuk menambah element pada stack.
Proses  menambah  element  baru  ke  dalam  stack  langkah-langkahnya  adalah  seperti
berikut:
1.   Cek apakah stack sudah penuh atau belum.
2.   Jika stack penuh, maka muncul pesan error dan exit.
3.   Jika stack tidak penuh, Tambahkan penanda top(atas) untuk menandai space kosong
            selanjutnya.
4.   Tambah element kedalam stack dimana penanda top berada.
5.   Return success.

void push(int data) {
        if(!isFull()) {
top = top + 1;
stack[top] = data;
} else {
printf("Could not insert data, Stack is full.\n");
}
}


-Pop: digunakan untuk mengambil element pada stack.
Proses pengambilan element dari stack langkah-langkahnya adalah seperti berikut:
1.   Cek apakah stack kosong
2.   Jika stack kosong, muncul pesan error dan exit
3.   Jika stack tidak kosong, maka ambil element paling atas yang di tunjuk penanda top
4.   Kurangi nilai dari penanda top 1
5.   Return success

int pop(int data) {
        if(!isempty()) {
data = stack[top];
        top = top - 1;
        return data;
} else {
printf("Could not retrieve data, Stack     is     empty.\n");
}
}


-IsEmpty: Untuk mengecek jika stack kosong
bool isempty()
{
      if(top == -1)
        return true; else
      return false;
}


-IsFull: Untuk mengecek jika stack penuh
bool isempty()
{
      if(top == -1)
      return true; else
      return false;
}

-Peak: Posisi top sudah ada di batas maksimal atau puncak
int peek()
{
      return stack[top];
}

Contoh Program
#include <iostream>
#include <stdlib.h>
#include<cstring>
#include<windows.h>
using namespace std;
struct tumpukan
{
      int top;
      char tmp[10][10];
}
tumpukan;
void push (char data[10]);
void pop();
void awal();
int isEmpty();
int isFull();
int main()
{
      int pilih;
      char data[10];
      string i;
      awal();
      do
{
      system("cls");
      cout<<"==================================="<<endl;
      cout<<"= CONTOH PROGRAM TUMPUKAN (STACK) ="<<endl;
      cout<<"==================================="<<endl<<endl;
      cout<<"=====Program Tumpukan Kijang======="<<endl;
      cout<<" 1. PUSH                          ="<<endl;
      cout<<" 2. POP                           ="<<endl;
      cout<<" 3. EXIT                          ="<<endl;
      cout<<"==================================="<<endl;
      if (!isEmpty())
      {
            for(int i=tumpukan.top; i>=0; i--)
            {
                  cout<<"["<<tumpukan.tmp[i]<<"]"<<endl;
            }
      }    
      else
      {
            cout<<"[tumpukan kijang dalam kondisi kosong]";
      }
      cout<<"\n Masukan Pilihan :";cin>>pilih;
      switch (pilih)
      {
            case 1:
                  cout<<"Masukan Kijang kedalam tumpukan :";cin>>data;
                  push(data);
                  break;
            case 2:
                  pop();
                  break;
            case 3:
                  cout<<"Tekan enter untuk keluar :";
                  break;
                  default:
                  cout<<"ERROR!";
                  break;
      }
}
while (pilih!=3);
}
void push (char data[10])
{
      if (!isFull())
{
      tumpukan.top=tumpukan.top+1; 
      strcpy(tumpukan.tmp[tumpukan.top],data);
}
else
cout<<"Kijang dalam tumpukan penuh";
}
void pop()
{
      if (!isEmpty())
{
      tumpukan.top--;
      cout<<"kijang pada tumpukan ke- "<< tumpukan.top+2<<"sudah diambil";
}
else
cout<<"Kijang dalam tumpukan kosong";
}
void awal()
{
      tumpukan.top= -1;
}
int isEmpty()
{
      if (tumpukan.top==-1)
      return 1;
      else
      return 0;
}
int isFull()
{
      if (tumpukan.top==10-1)
      return 1;
      else
      return 0;
}
 output :









Thanks for reading & sharing TeknoBlog

Previous
« Prev Post

0 comments:

Post a Comment

iklan