Sabtu, 03 Januari 2015

Contoh Program Stack Dengan Array Di C++

    Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman, Bersifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. Contohnya, karena kita menumpuk Compo di posisi terakhir, maka Compo akan menjadi elemen teratas dalam tumpukan. Sebaliknya, karena kita menumpuk Televisi pada saat pertama kali, maka elemen Televisi menjadi elemen terbawah dari tumpukan. Dan jika kita mengambil elemen dari tumpukan, maka secara otomatis akan terambil elemen teratas, yaitu Compo juga.

Stack bisa dilakukan dengan double linked list dan juga bisa dilakukan dengan Array, Berikut adalah contoh Stack dengan Array :

#include<stdio.h>
#include<conio.h>
#include<string.h>
void inisialisasi();
void push();
void pop();
void clear();
#define MAX_STACK 10
typedef struct STACK
{ int top;
  char data[10][10];
  }STACK;

STACK tumpuk;

void inisialisasi()
{ tumpuk.top= -1;}

int IsFull(){
if(tumpuk.top== MAX_STACK-1)
return 1;
else
return 0;
}

int IsEmpty(){
if(tumpuk.top== -1)
    return 1;
else
return 0;
      }

void Push(char d[10])
{ tumpuk.top++;
strcpy(tumpuk.data[tumpuk.top],d);
}

void Pop()
{ printf("Elemen terakhir stack sudah dihapus, yaitu : %s\n",tumpuk.data[tumpuk.top]);
tumpuk.top--; }

void Clear()
{ tumpuk.top=-1; }

void Search(char i[10]){
tumpuk.top++;
    if(i == tumpuk.data){
      tumpuk.data[tumpuk.top];
      printf("data pada ",tumpuk.top);
         }
         }

void TampilStack()
{
   for(int i=tumpuk.top;i>=0;i--)
   { printf("Data : %s\n",tumpuk.data[i]); }
}

int main()
{
   int pil;
   inisialisasi();
   char dt[10];
do{
    clrscr();
    printf("PILIHAN PROSES\n");
    printf("[1] Masukan Data\n");
    printf("[2] Hapus Data\n");
    printf("[3] Tampil Isi Stack\n");
    printf("[4] Mereset Stack\n");
    printf("[5] Keluar\n");
    printf("Masukan kode pilihan (1 ... 5) : "); scanf("%d",&pil);

switch(pil)
{
   case 1: if(IsFull() != 1)
   { printf("Masukan Data : ");scanf("%s",dt);
   Push(dt);}
   else
    printf("\nSudah penuh, push gagal!\n");
   break;

   case 2: if(IsEmpty() != 1)
   Pop();
   else
   printf("\nMasih kosong!\n");
   break;

   case 3: if(IsEmpty() != 1)
   TampilStack();
   else
   printf("\nStack kosong!\n");
   break;

   case 4: Clear();
   printf("\nStack sudah di hapus!\n");
   break;
   }
  getch();
  } while(pil!= 5);
getch();

}
Semoga Bermanfaat...

Tidak ada komentar:

Posting Komentar