Langsung ke konten utama

Mengenal Stack Pada C++

Stack dapat diartikan sebagai tumpukan dari benda atau data yang seolah-olah diletakkan di atas data yang lain dimana data yang pertama kali masuk akan terakhir. Secara sederhana sebuah stack bisa digambarkan sebagai tumpukan buku yang disimpan dengan cara ditumpuk keatas. Dimana buku yang pertama kali disimpan atau ditumpuk ada di paling bawah dan yang selanjutnya ditumpuk diatasnya. Dan ketika kita melakukan pengambilan buku ototmatis buku yang terkahir ditumpuk atau disimpan terakhir akan mejadi yang pertama diambil, istilah ini kemudian disebut FILO (First In Last Out) dan bertambah atau berkurangnya data melalui satu ujung yang sama yaitu ujung atas tumpukan (Top of Stack).


Ada 2 operasi dasar dari stack yang dapat dilakukan, yaitu :
  1. Operasi push yaitu operasi menambahkan elemen pada urutan terakhir (paling atas).
  2. Operasi pop yaitu operasi mengambil sebuah elemen data pada urutan terakhir dan menghapus elemen tersebut dari stack.
Selain operasi dasar stack (push dan pop), ada lagi operasi lain yang dapat terjadi dalam stack yaitu :
  1. Proses deklarasi yaitu proses pendeklarasian stack.
  2. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan pemberian nilai untuk top.
  3. Proses cek kosong yaitu proses pemeriksaan apakah stack dalam keadaan kosong.
  4. Proses cek penuh yaitu proses pemeriksaan apakah stack telah penuh.

Operasi-operasi stack secara lengkap adalah sebagai berikut :
Pendeklarasian stack dengan array
Proses pendeklarasian stack adalah proses pembuatan struktur stack dalam memori. Karena stack dapat direpresentasikan dalam 2 cara, maka pendeklarasian stack pun ada 2 yaitu:
Suatu stack memiliki beberapa bagian yaitu
  1. top yang menunjuk posisi data terakhir (top)
  2. elemen yang berisi data yang ada dalam stack. Bagian ini lah yang berbentuk array. Deklarasi stack dengan array:
struct stack
{
int elemen[10]; //elemen int top;
};
Inisialisasi
Inisialisasi stack adalah proses pembuatan suatu stack kosong. Proses inisialisasi untuk stack yang menggunakan array adalah dengan mengisi nilai field top dengan 0 (nol) jika elemen pertama diawali dengan nomor 1. Kalau elemen pertama array dimulai dengan 0 maka top diisi dengan nilai -1.
p->top=-1
Operasi Cek Kosong Stack
Operasi ini digunakan untuk memeriksa apakah stack dalam keadaan kosong. Operasi ini penting dilakukan dalam proses pop. Ketika suatu stack dalam keadaan kosong, maka proses
pop tidak bisa dilakukan. Operasi ini dilakukan hanya dengan memeriksa field top. Jika top top bernilai -1, maka berarti stack dalam keadaan empty (kosong).
if (p->top==-1)
{
cout<<"STACK kosong";
return -1;
}

Operasi Cek Penuh
Operasi ini berguna untuk memeriksa keadaan stack apakah sudah penuh atau belum. Operasi ini akan memberikan nilai true (1) jika field top sama dengan size-1.
if(p->top==size-1)
cout<<"STACK penuh ";

Operasi Push
Operasi ini berguna untuk menambah suatu elemen data baru pada stack dan disimpan pada posisi top yang akan mengakibatkan posisi top akan berubah. Langkah operasi ini adalah :
  • Periksa apakah stack penuh. Jika tidak penuh maka proses push dilaksanakan dan jika stack penuh, maka proses push digagalkan.
  • Proses push-nya sendiri adalah dengan menambah field top dengan 1, kemudian elemen pada posisi top diisi dengan elemen data baru. if(p->top==size-1)
    cout<<"STACK penuh ";
    else
    p->elemen[++p->top]=value;
Operasi Pop
Operasi ini berguna untuk mengambil elemen terakhir (top) dan kemudian menghapus elemen tersebut sehingga posisi top akan berpindah. Langkah operasi pop pada stack yang menggunakan array adalah terlebih dahulu memeriksa apakah stack sedang keadaan kosong, jika tidak kosong maka data diambil pada posisi yang ditunjuk oleh posisi top, kemudian posisi top – 1.
if (p->top==-1)
{
   cout<<"STACK kosong";
   return -1;
}
else
    return p->elemen[p->top--];

Program Lengkap:
#include<iostream.h> 
#include<stdio.h> 
#include<conio.h> 
#define size 50 

struct stack {
  int elemen[size];
  int top; 
};
typedef struct stack STACK; 

// operasi push 
void push(STACK *p,int value){
  if(p->top==size-1)
   cout<<"STACK penuh ";
  else
   p->elemen[++p->top]=value; 
}
//operasi pop
int pop(STACK *p)  {
if (p->top==-1)  
{
   cout<<"STACK kosong";
   return -1;
  }
  else
   return p->elemen[p->top--];
}
//menampilkan stack 
void display (STACK *p) {
  int i;
  if(p->top==-1)
   cout<<"\n STACK kosong\n";
  else
   cout<<"\nIsi STACK adalah : \n";
   for (i=p->top;i>=0; --i)
    cout<<p->elemen[i]<<"\n"; 
}

void main() {
  STACK s ;
  int x,c,i;
  s.top=-1;
  do
  {
   cout<<"MENU PILIHAN";
   cout<<"\n1: Operasi PUSH\n";
   cout<<"2: Operasi POP\n";
   cout<<"3: Tampilkan Stack\n";
   cout<<"4: Hapus Stasck\n";
   cout<<"5: Keluar\n";
   cout<<"\n\n Pilihan anda : ";cin>>c;
   switch(c)   {
    case 1:  cout<<"\nMasukkan Elemen Stack: ";cin>>x;
             push (&s,x);
               display(&s);
     break;
    case 2:  x=pop(&s);
     if(x!=-1)
      cout<<"\nMenghapus Element = "<<x;
     break;
    case 3: display(&s);
     break;
    case 4:
    if(s.top==-1)
      cout<<endl<<"STACK kosong";
    else
      cout<<endl<<"STACK dihapus"<<endl;
                     //Menghapus STACK 
    for (i=s.top;i>=0; --i)
      cout<<"Elemen yang dihapus adalah : "<<pop(&s)<<endl;
     s.top=-1;
   }
       getch();
clrscr();
  }
while(c!=5); 
} 

Komentar

  1. thank you gan atas materinya..

    BalasHapus
  2. maaf gan tanda -> ini mksd nya gmn ?

    BalasHapus
    Balasan
    1. Udh tau class atau struct kan? Kalau pas pendeklarasian class/ struct pakai pointer nanti referensi ke data/method di class/pointernya bukan pakai .(titik) tapi pakai - >

      Hapus
  3. mantap bang materinya sangat membantu, jika belum paham tentang konsep kerja stack, bisa cek atau kunjungi di blog saya tentang animasi stack untuk pemahaman konsep stack

    BalasHapus

Posting Komentar

Kritik, Saran dan Komentar Kami tunggu

Postingan populer dari blog ini

Crystal Report Error : Failed to load database infromation

Ketika menjalankan crystal report tiba - tiba terjadi error dengan pesan Failed to load database infromation, usut punya usut ternyata penyebabnya adalah windows 10. Gambar : Error Crystal Report Tapi tenang saja berikut ini saya akan bahas cara penyelesaianya Masuk ke file yourApp.exe.config. Cari code <?xml version="1.0" encoding="utf-8" ?> <configuration>     <startup>          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />     </startup> </configuration> Ubah menjadi <?xml version="1.0"?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup> </configuration> Kemudian coba lagi jalankan print dengan crystal report.  Source http://stackoverflow.com/questions/15951142/appcrash-on-s

Perbedaan metode close dan dispose

Klikartikel.com Perbedaan dasar antara Close () dan Dispose () yaitu, ketika metode Close () dipanggil, maka koneksi akan ditutup sementara dan dapat dibuka sekali lagi. lalu perbedaan dengan dispose () yaitu ketika metode dispose dipanggil maka akan secara permanen menutup dan menghapus objek koneksi dari memori dan tidak ada lagi pemrosesan lebih lanjut. Contoh penggunaan fungsi Close dan Dispose string constring = "Server=(localhost);database=myprojectdb; username =root; password=admin"; SqlConnection sqlcon = new SqlConnection(constring); sqlcon.Open();   // disini koneksi dibuka // jalankan kode disini } catch {      // kode akan dijalankan saat error terjadi di blok try } finally {  sqlcon.Close();               // koneksi ditutup  sqlcon.Dispose();         // menghancurkan koneksi objek }

Cara Mudah Upload File Ke Github

Klikartikel.com - Selamat malam udah lama rasanya ga posting ke blog ini karena kegiatan kuliah dan kerjaan yang padat. Kali ini kita akan belajar tentang bagaimana cara mengupload file atau project kita ke github, Langsung saja kita bahas bagaimana cara mudah upload file ke github Pertama - tama buat akun github terlebih dahulu. Pastikan koneksi internet anda lancar dan stabil Pilih folder yang akan kita upload filenya  Kemudian masukan perintah berikut Pertama Inisialisai file git int Kedua Memasukan File Project git add * Atau jika kita hanya memasukan beberapa file bisa menggunkan perintah seperti di bawah ini git add namafile.format_file Setelah itu cek status file  Ketiga menyimpan sekaligus membuat catatan  git commit -m "upload pertama" Login ke akun github kemudian buat repository    Copy link repository Melakukan Pull and Push Masuk ke terminal lagi kemudian koneksikan antara repository dan github di dekstop deng