Stack Using Array
Stack atau dalam bahasa kita disebut tumpukan adalah suatu urutan elemen dimana elemen-elemen tersebut hanya dapat diambil atau ditambah melalui posisi teratas saja. Istilah kerennya LIFO (Last In, First Out), siapa yang masuk paling terakhir, dialah yang keluar paling awal
Misalkan ada 20 tumpuk karung beras dalam gudang. Saat ingin memindahkan beras-beras itu ke Gudang lain, orang akan mengambil tumpukan paling atas terlebih dahulu, khan? (Jawab aja iya, dech ^^)
Stack memiliki 2 operasi dasar, yaitu:
- Operasi push, untuk menambahkan elemen (pada urutan teratas tentunya).
- Operasi pop, untuk mengambil elemen dan menghapusnya dari stack.
Berikut adalah contoh implementasi Stack dengan mengunakan Array dalam C:
#include<stdio.h>
#define MAX 50
typedef int data_Type;
typedef struct
{
data_Type data[MAX];
int TOS;
}STACK;
data_Type item[MAX], temp, x;
int pilih, i, n;
char lagi='y';
void inisialisasi(STACK *s)
{
s->TOS = 0;
}
int full(STACK *s)
{
return (s->TOS == n);
}
int empty(STACK *s)
{
return (s->TOS == 0);
}
void push(data_Type x, STACK *s)
{
if(full(s))
puts("Stack is Full!");
else
{
s->data[s->TOS] = x;
(s->TOS)++;
}
}
data_Type pop(STACK *s)
{
data_Type tampung;
if(empty(s))
puts("Stack is Empty!");
else
{
(s->TOS)--;
tampung = s->data[s->TOS];
}
return tampung;
}
void tampil(STACK *s)
{
for(i=s->TOS-1; i>=0; i--)
{
printf("%d ", s->data[i]);
}
puts("");
}
main()
{
STACK s;
inisialisasi(&s);
printf("Masukkan jumlah tumpukan : ");
scanf("%d", &n);
while((lagi == 'y') || (lagi == 'Y'))
{
puts("MENU");
puts("1. Push");
puts("2. Pop");
printf("What do you want?: ");
scanf("%d", &pilih);
switch(pilih)
{
case 1:
printf("Enter data: ");
scanf("%d", &x);
push(x, &s);
break;
case 2:
pop(&s);
break;
default :
puts("Invalid Input!");
break;
}
tampil(&s);
fflush(stdin);
printf("Try again [y/t]? ");
scanf("%c", &lagi);
puts("");
}
}
Sekian dulu tulisan singkat saya. Mudah-mudahan bermanfaat bagi yang sedang memulai belajar C/C++
- Standard Chartered Bank Indonesia Vulnerable to XSS
- Monitor: Out Of Frequency
- Merename File HTML berdasarkan Title dengan PHP
- Bank Mandiri Vulnerable to XSS
- Right Triangle a.k.a Segi Tiga Siku-Siku in C
- How to Root Samsung Galaxy Ace on Android 2.3.4/2.3.3 Gingerbread
- Fix Blank Screen Setelah Booting Pada Ubuntu




