#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;
for (i = 0; i < sp; i++) {
}
}
int main() {
int x;
push(10);
push(20);
push(30);
printStack();
pop(&x);
printStack();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE1BWCAxMDAKCmludCBzdGFja1tNQVhdOwppbnQgc3AgPSAwOwoKLyogcHVzaOmWouaVsCAqLwppbnQgcHVzaChpbnQgZGF0YSkgewogICAgcHJpbnRmKCJbcHVzaOmWi+Wni10gc3AgPSAlZFxuIiwgc3ApOwoKICAgIGlmIChzcCA+PSBNQVgpIHsKICAgICAgICByZXR1cm4gLTE7ICAgLy8g44K544K/44OD44Kv5rqA5p2vCiAgICB9CgogICAgc3RhY2tbc3BdID0gZGF0YTsKICAgIHNwKys7CgogICAgcmV0dXJuIDA7Cn0KCi8qIHBvcOmWouaVsCAqLwppbnQgcG9wKGludCAqZGF0YSkgewogICAgcHJpbnRmKCJbcG9w6ZaL5aeLXSBzcCA9ICVkXG4iLCBzcCk7CgogICAgaWYgKHNwIDw9IDApIHsKICAgICAgICByZXR1cm4gLTE7ICAgLy8g44K544K/44OD44Kv56m6CiAgICB9CgogICAgc3AtLTsKICAgICpkYXRhID0gc3RhY2tbc3BdOwoKICAgIHJldHVybiAwOwp9CgovKiDjgrnjgr/jg4Pjgq/lhoXlrrnooajnpLrplqLmlbAgKi8Kdm9pZCBwcmludFN0YWNrKCkgewogICAgaW50IGk7CgogICAgcHJpbnRmKCJTdGFjayA9IFsgIik7CiAgICBmb3IgKGkgPSAwOyBpIDwgc3A7IGkrKykgewogICAgICAgIHByaW50ZigiJWQgIiwgc3RhY2tbaV0pOwogICAgfQogICAgcHJpbnRmKCJdXG4iKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgeDsKCiAgICBwdXNoKDEwKTsKICAgIHB1c2goMjApOwogICAgcHVzaCgzMCk7CgogICAgcHJpbnRTdGFjaygpOwoKICAgIHBvcCgmeCk7CiAgICBwcmludGYoInBvcOOBl+OBn+WApCA9ICVkXG4iLCB4KTsKCiAgICBwcmludFN0YWNrKCk7CgogICAgcmV0dXJuIDA7Cn0=