#include <stdio.h>

#define MAX 100

int stack[MAX];
int sp = 0;

/* push関数 */
int push(int data) {
    printf("[push開始] sp = %d\n", sp);

    if (sp >= MAX) {
        return -1;   // スタック満杯
    }

    stack[sp] = data;
    sp++;

    return 0;
}

/* pop関数 */
int pop(int *data) {
    printf("[pop開始] sp = %d\n", sp);

    if (sp <= 0) {
        return -1;   // スタック空
    }

    sp--;
    *data = stack[sp];

    return 0;
}

/* スタック内容表示関数 */
void printStack() {
    int i;

    printf("Stack = [ ");
    for (i = 0; i < sp; i++) {
        printf("%d ", stack[i]);
    }
    printf("]\n");
}

int main() {
    int x;

    push(10);
    push(20);
    push(30);

    printStack();

    pop(&x);
    printf("popした値 = %d\n", x);

    printStack();

    return 0;
}