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();
}
#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