Stack merupakan susunan koleksi data yang menyerupai tumpukan. Sifat dari stack adalah LIFO (Last In First Out) artinya objek yang terakhir masuk akan menjadi objek yang pertama kali keluar.


Fungsi-fungsi operasi yang ada pada stack adalah :
a. Operasi Push : merupakan operasi memasukkan data-data stack.
b. Operasi Pop : merupakan operasi mengeluarkan data stack, dimulai dari yang terakhir masuk.
c. Operasi stack_kosong : merupakan fungsi untuk mendeteksi apakah stack dalam keadaan kosong atau tidak.
d. Operasi stack_penuh : merupakan fungsi untuk mendeteksi apakah stack dalam keadaan penuh atau tidak.


B. Langkah-langkah
1. Definisikan konstanta MAX_STACK
MAX_STACK menyatakan jumlah maksimum data yang bisa disimpan dalam stack.
#define max_stack
2. Membuat tipe struktur dengan nama STACK
struct STACK{
int data[5];
int atas;
};
3. Mendeklarasikan variabel yang mengimplementasikan tipe struktur STACK.
struct STACK stack;
4. Menginisialisasi stack.atas dengan nilai -1.
Hal ini diperlukan karena index dari array pada bahasa C dimulai dari 0. Sehingga pada saat stack belum terisi indexnya diisi dengan -1.
stack.atas=1;
5. Membuat operasi push (memasukkan data stack)
if (stack.top==(max_stack1)){
printf(“Stack penuh…!!\n”);}
else {
printf(“Masukkan data yang dipush : “);scanf(“%d”,&data);
stack.top++;
stack.data[stack.top]=data;
}
6. Membuat Operasi Pop
if (stack.top==-1) {
printf(“Stack kosong…!!\n”);
}else {
printf(“stackan yang diPop : %d.\n”,stack.data[stack.top]);
stack.top–;
}
7. Membuat fungsi stack_kosong
if (stack.top==-1)
return 1;
else
return 0;
8. Membuat fungsi stack_penuh
if (stack.top==(max_stack-1))
return true;
else
return false;

Berikut ini adalah contoh program stack :

 

#include <stdio.h>
#include <stdlib.h>
#define max_stack 5
struct STACK{
int data[max_stack];
int top;
};

struct STACK stack;
int penuh();
void tampil();
int main()
{
int pilih,data,i;
stack.top=-1;
do{
printf(” \n\n MENU OPERASI STACK\n”);
printf(” ===================\n”);
printf(” 1. Push Data\n”);
printf(” 2. Pop Data\n”);
printf(” 3. Print Data\n”);
printf(” 4. Keluar Program\n”);
printf(” Pilihan Anda ?? [1-4] :  “);scanf(“%d”,&pilih);
switch(pilih){
case 1: //push
if (stack.top==(max_stack-1)){
printf(” Stack penuh . . .!!!\n”);}
else{
printf(” Masukkan data yang ingin di push : “);scanf(“%d”,&data);
stack.top++;
stack.data[stack.top]=data;}
break;
case 2: //pop
if (stack.top==-1){
printf(” Stack Kosong . . .!!!\n\n”);}
else{
printf(” Stackkan yang diPOp : %d.\n”,stack.data[stack.top]);
stack.top–;}
break;
case 3: //tampil
if (stack.top==-1){
printf(” Stack Kosong . . .!!!\n\n”);}
else{
printf(” Data : \n”);
for(i=stack.top;i>=0;i–){
printf(“%d \n”,stack.data[i]);}
printf(“\n”);
}
printf(” ================= \n”);
break;
case 4: exit(0);
}
}while(pilih>0&&pilih<=4);
return 0;
}