Sunday, May 13, 2018

Stack dalam Bahasa C



Stack merupakan jenis linked list yang menerapkan konsep LIFO (Last In Fist Out) artinya elemen dari struktur (node) yang dimasukkan pertama kali ke dalam rangkaian akan dikeluarkan (diproses) terakhir kali sedangkan elemen yang masuk terakhir akan diproses / dikeluarkan pertama. Dengan kata lain setiap transaksi atau aktifitas yang ada dalam stack dilakukan pada kepalanya (head) saja. Pada stack hanya ada 2 fungsi utama yaitu Push atau menambah/memasukkan struktur (node) ke dalam stack, dan Pop atau mengeluarkan/menghapus node dari stack.

Cara kerja stack dapat di ilustrasikan sebagai berikut:

| W | ---> atas
| X |
| Y |
| Z | ---> bawah

Anggaplah ilustrasi diatas sebagai tumpukan data, W sebagai node (struktur) yang atas (terakhir dimasukkan) dan Z sebagai node yang bawah (pertama kali dimasukkan). Jika kita melakukan operasi Push (menambah), misalnya V, maka penambahan akan dilakukan pada nilai yang paling atas, yaitu W, sehingga menjadi:

| V | ---> atas
| W |
| X |
| Y |
| Z | ---> bawah

Sehingga nilai V menjadi nilai atas yang baru, dan jika dilakukan operasi pop, maka stack akan menjadi seperti gambar yang pertama diatas, yaitu nilai W menjadi nilai atas, dan nilai V akan dihapus dari tumpukan (stack).

Contoh Source Code dari Stack adalah :

#include <iostream>
#include <conio.h>
#define SIZE 10
using namespace std;

int Stack[SIZE];
int top = -1;

bool isFull(){
if(top==SIZE-1){
cout<<endl<<"Stack sudah penuh!"<<endl;
getch();
exit(0);
return true;
}else
return false;
}

bool isEmpty(){
  if(top==-1){
     cout<<endl<<"Stack kosong!"<<endl;
     getch();
exit(0);
  return true;
  }else
  return false;
}

void push(int value){
    if(isFull()){
}else
top++;
Stack[top]=value;

}
void printStack(){
  if(isEmpty()){
  }else if (isFull()){
  }else
for(int i=top;i>=0;i--){
    cout<<Stack[i]<<endl;
}
}

void pop(){
 if(isEmpty()){
  }else
  cout<<endl<<"Stack diambil : "<<Stack[top]<<endl;
  top--;
  printStack();
}

int main(){
 int choice, data=1;
 do{
cout<<"Input Data : ";
  cin>>choice;
switch (choice){  
case 999:
cout<<"Proses Selesai!"; 
data = 0;
        break;
case 60 ... 998:
push(choice);    
break;
case 0 ... 59:
pop(); 
        break;
  }
 }while(data == 1);
  getch();
  return 0;

}



Source code diatas merupakan implementasi dari sebuah soal pada gambar di bawah ini: 



Ini adalah Implementasi Programnya :




No comments:

Post a Comment