stack (tumpukan) bahasa C
STACK
x
x
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 node (struktur) ke dalam stack, dan Pop atau mengeluarkan/menghapus node dari stack.
operasi-operasi dalam stack :
1. Push : untuk menambahkan item pada tumpukan paling atas
2. Pop : untuk mengambil item paling atas
3. Clear : untuk mengosongkan stack
4. IsEmpty : fungsi yang digunakan untuk mengecek apakah stack sudah kosong
5. IsFull : fungsi yang digunakan untuk mengecek apakah stack sudah penuh
Stack Dengan Array of Struct
1. Definisikan Stack dengan menggunakan suatu struct
2. Definisikan konstanta MAX_STACK untuk menyimpan maksimum isi stack
3. Elemen struct Stack adalah array data dan top untuk menadakan posisi data teratas
4. Buatlah variabel tumpuk sebagai implementasi dari struct Stack
5. Deklarasikan operasi-operasi/function di atas dan buat implemetasinya
oke langsung saja, ngak usa panjang lebar langsung ke source code :
#include<stdio.h>
#include<conio.h>
#define MAX 50
#define true 1
#define false 0
char stack[MAX];
int top;
void init(void);
int full (void);
int empty (void);
char pop (void);
void clear (void);
void push (char info);
void baca (void);
main()
{
char pilih,khol;
printf("----Demo Operasi Single Stack----\n");
init();
do
{
printf("operasi single stack:\n");
printf("[1] PUSH\n");
printf("[2] POP\n");
printf("[3] CLEAR\n");
printf("[4] BACA\n");
printf("[5] SELESAI...\n");
printf(" Pilihan : ");scanf("%s",&pilih);
switch(pilih)
{
case '1': printf("PUSH ");scanf("%s",&khol);push(khol);break;
case '2': khol=pop();printf("POP %c\n",khol);break;
case '3': clear();break;
case '4': baca();break;
case '5': break;
default : printf("Salah pilih...\n");
}
printf("\n");
}while(pilih!='5');
getche();
}
void init(void)
{
top=0;
}
void push(char info)
{
if(full()!=true)
{ top++;
stack[top]=info; }
else printf("Stack overflow...\n");
}
char pop(void)
{
char info;
if(empty()!=true)
{ info=stack[top];
top--;
return(info);
}
else printf("Stack underflow...\n");
}
void clear(void)
{
top=0;
}
int full(void)
{
if(top==MAX) return(true);
else return(false);
}
int empty(void)
{
if(top==0) return(true);
else return(false);
}
void baca(void)
{
int i;
printf("isi stack : ");
if(top>0)
{
for(i=1;i<=top;i++)
printf("%c ",stack[i]);
}
else printf("(kosong)");
printf("\n");
}
Hasil Script di atas :
mantab banget gan
BalasHapuselemen solder uap