#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>

#define MAX_STACK 10

struct tumpukan
{
    int top;
    char data[10][10];
};

struct tumpukan tumpuk;

void inisialisasi()
{
    tumpuk.top = -1;
}

void push(char d[10])
{
    tumpuk.top++;
    strcpy(tumpuk.data[tumpuk.top],d);
}

void pop()
{
    printf("Data yang diambil adalah : %s \n",tumpuk.data[tumpuk.top]);
    tumpuk.top--;
}

void tampilkan(i)
{
    for (i=tumpuk.top;i>=0;i--)
    {
        printf("Stack ke -%i adalah : %s \n",i,tumpuk.data[i]);
    }
}

int isKosong()
{
    if (tumpuk.top==-1)
    {
        return 1;
    }
    else
        return 0;
}

int isPenuh()
{
    if (tumpuk.top==MAX_STACK-1)
        return 1;
    else
        return 0;
}

void search(int i)
{
    char tmp[10];

    while (i<=tumpuk.top)
    {
        strcpy(tmp,tumpuk.data[i]);
        strcpy(tumpuk.data[i],tumpuk.data[i+1]);
        strcpy(tumpuk.data[i+1],tmp);

        i++;
    }

    pop();
}

main()
{
    int pil,bil;
    inisialisasi();
    char dt[10];

    printf("Selamat datang di program Stack \n");

    printf("1.Push \n");
    printf("2.Pop \n");
    printf("3.Tampilkan \n");
    printf("4.Clear \n");
    printf("5.Search And Remove \n");
    printf("6.Exit \n");


    do
    {
        printf("Masukkan Pilihan :  ");scanf("%i",&pil);
        switch(pil)
        {
            case 1 : if (isPenuh()!=1)
                     {
                         printf("Masukkan Content Stack : ");scanf("%s",&dt);
                         push(dt);
                     }
                     else
                        {
                            printf("sudah penuh \n");
                        }
                     break;
            case 2  : if (isKosong()!=1)
                      {
                          pop();
                      }
                      else
                      {
                          printf("Masih Kosong \n");
                      }
                      break;
            case 3  : if (isKosong()!=1)
                      {
                          tampilkan();
                      }
                      else
                        {
                            printf("Masih kosong \n");
                        }
                      break;
            case 4  : if (isKosong()!=1)
                      {
                          printf("cari data yang akan dihilangkan   : ");scanf("%i",&bil);
                          search(bil);
                      }
                      else
                        {
                            printf("Masih Kosong \n");
                        }
                      break;
        }
    }while(pil!=6);

    return 0;
}