contoh program stack c++

Kali ini saya akan coba share contoh program sederhana yaitu stack c++, Logika program seperti ini banyak diguakan pada pembuatan aplikasi mobil dan desktop.

#include <iostream> // untuk routing input-output basic; cout,cin,endl
#include <conio.h> //untuk cmemanggil console DOS input-output; getch,clrscr,system cls
#include <string>


using namespace std;

int maxim=50; //untuk jumlah maksimum stack & queue
string data[50]; //declare string sebanyak 50 sesuai sama maximal
int penunjuk=-1; // batas bawah tumpukan

//membuat fungsi IsEmpty untuk mengecek stack/queue kosong atau tidak
bool IsEmpty()
{
 if(penunjuk == -1)
  return true;
 else
  return false;
}

//membuat fungsi IsFull untuk mengecek stack/queue isi atau tidak
bool IsFull()
{
 if(penunjuk == maxim-1)
  return true;
 else
  return false;
}

//membuat fungsi Push untuk memasukkan nilai kedalam stack yang sebelumnya dicek terlebih dahulu apakah penuh atau belum
void push()
{
 if(IsFull())
 {
  cout<<"Tumpukan Sudah Penuh!";
  getch();
 }
 else
 {
  penunjuk++;
  cout<<"Data Yang Akan Dimasukkan = ";
  cin>>data[penunjuk];
  cin.ignore(); //function agar string bisa terus berulang tanpa di clear terlebih dahulu
 }

}

//membuat fungsi Pop untuk mengambil nilai dari stack yang sebelumya dicek terlebih dahulu apakah kosong atau belum
void pop()
{
 if (IsEmpty())
 {
  cout<<"tidak ada data!";
  getch();
 }
 else
 {
  cout<<"Data yang diambil adalah : "<<data[penunjuk];
  penunjuk--;
  getch();
 }
}
void dequeue()
{
 if (IsEmpty())
 {
  cout<<"tidak ada data!";
  getch();
 }
 else
 {
  cout<<"Data yang diambil adalah : "<<data[0];
  penunjuk--;
  /*for(int x=0;x<=penunjuk;x++)//looping untuk menghapus top dalam stack, agar tidak double
  {
   data[x]=data[x+1];
  }*/
 
  getch();
 }
}
//membuat fungsi Clear untuk menghapus data dalam stack
void clear()
{
 penunjuk = -1;
 cout<<" Sudah Dikosongkan!";
 getch();
}

//membuat fungsi untuk menampilkan isi dari stack
void view()
{
 if (!IsEmpty())

 {
  for(int a=penunjuk;a>=0;a--) //looping untuk melihat data stack/queue sesuai limit yang diinput
  {
   cout<<"Data Pada Tumpukan ke-"<<a<<": "<<data[a]<<endl;
  }
 }
 else
 {
  cout<<"- N U L L -";
 }
 

}

//fungsi utama
main()
{
 int jawab;
 
 system ("cls");
 cout<<"\t-------------------------------------------------\n";
 cout<<"\t*\t   APPLIED PROGRAMMING  *\n";
 cout<<"\t*\t Program Stack dan Queue  *\n";
 cout<<"\t-------------------------------------------------\n";
 cout<<"\t|      |\n";
 cout<<"\t| Built By:    |\n";
 cout<<"\t|   Baco     |\n";
 cout<<"\t|   Baso    |\n";
 cout<<"\t|   Irwan    |\n";
 cout<<"\t|      |\n";
 cout<<"\t-------------------------------------------------\n";
 cout<<"\t|      |\n";
 cout<<"\t|\t Informatics Engineering - Batch IV |\n";
 cout<<"\t|\t      ======================  |\n";
 cout<<"\t|      |\n";
 cout<<"\t=================================================\n";
 cout<<"\t\t   Press Any Key To Continue...  \n";
 cout<<"\t=================================================\n"; 
 getch();
  
 do
 {
  system ("cls");
  cout<<endl;
  cout<<"Status Data Saat Ini:"<<endl<<endl;
   view();
  cout<<endl<<endl<<endl<<endl<<endl<<endl;
  
  
  cout<<"==================== P R O G R A M =====================\n\n";
  cout<<"         S T A C K  &  Q U E U E     \n\n";
  cout<<"*********************************************************\n";
  cout<<"|       |\n";
  cout<<"| 1. Push/Enqueue     |"<<endl;
  cout<<"| 2. Pop       |"<<endl;
  cout<<"| 3. Dequeue     |"<<endl;
  cout<<"| 4. Clear     |"<<endl;
  cout<<"| 5. Exit      |"<<endl;
  cout<<"|       |\n";
  cout<<"*********************************************************\n";
  cout<<"Masukkan pilihan Anda [ 1/2/3/4/5 ]= ";
  cin>>jawab;
 
  
  
  switch(jawab)
  {
  case 1:
   
   int limit;
   cout<<"Masukkan Jumlah Limit Data = ";
   cin>>limit;
   
   for(int a=1; a<=limit; a++) //looping untuk memunculkan data sesuali limit yang diinput
   {
    push();
   }
   break;

  case 2:
   pop();   
   break;
   
  case 3:
   dequeue();
   break;
   
  case 4:
   clear();
   break;
  
  }
 }
 while (jawab !=5);
}
Default image
Arman Basir
A New Journey. Menyukai hal-hal baru yang menantang dan kompleks untuk di pecahkan

Leave a Reply