Kali ini saya akan menampilkan contoh program yang menggunakan metode stack!!
Berikut adalah contoh programnya:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define max 5
typedef struct {
int top;
int data[max+1];
}stack;
stack tumpukan;
void createEmpty();
int IsEmpty();
int IsFull();
void push(int x);
void pop();
main(){
int lagi;
int input;
int pilih;
createEmpty();
pilih = 0;
while (pilih != 5){
menu:system("cls");
puts("_____________________________________");
printf(" MENU UTAMA\n");
//Printf dan Puts memiliki Fungsi yang sama
puts("_____________________________________");
puts("1: Cek kondisi Tumpukan");
puts("2: Tambah data (Pust)");
puts("3: Keluarkan isi Tumpukan (Pop)");
puts("4: Kosongkan Tumpukan");
puts("5: Keluar");
printf("Pilihan Anda: ");
scanf("%d",&pilih);
switch(pilih){
case 1:
system("cls");
if (IsEmpty() == 1)
puts("Stack masih kosong");
else if ((IsEmpty() == 0) && (IsFull() == 0))
puts("Stack sudah terisi (belum penuh)");
else
puts("Stack sudah penuh");
system("pause");
goto menu;
break;
case 2:
system("cls");
if (IsFull() == 1)
puts("Stack Penuh.");
else
{
printf("Masukkan data: ");
scanf("%d",&input);
push(input);
printf("Top baru: %d\n",tumpukan.data[tumpukan.top]);
printf("IsFull: %d\n",IsFull());
printf("IsEmpty: %d\n",IsEmpty());
}
system("pause");
goto menu;
break;
case 3:
system("cls");
printf("Top yang dikeluarkan bernilai: %d \n",tumpukan.data[tumpukan.top]);
pop();
system("pause");
goto menu;
break;
case 4:
system("cls");
while (IsEmpty() == 0)
{
printf("Top yang dikeluarkan bernilai: %d \n",tumpukan.data[tumpukan.top]);
pop();
}
puts("Stack sudah kosong");
system("pause");
goto menu;
break;
case 5:
system("cls");
puts("---Terimakasih---");
system("pause");
goto menu;
break;
}
}
system("pause");
goto menu;
}
void createEmpty(){
tumpukan.top = 0;
}
void push(int x){
tumpukan.top = tumpukan.top + 1;
tumpukan.data[tumpukan.top] = x;
}
void pop(){
tumpukan.top = tumpukan.top - 1;
}
int IsEmpty(){
if (tumpukan.top == 0)
return 1;
else
return 0;
}
int IsFull(){
if (tumpukan.top == max)
return 1;
else
return 0;
}
Tidak ada komentar:
Posting Komentar