#include <stdio.h>
#define SIZE 5
int stack[SIZE];
int sp;
void push(int value);
int pop(void);
int isFull(void);
int isEmpty(void);
void display(void);
void initialize(void);
int main(void) {
sp = 0;
int resp, data;
while (1) {
printf("1:push 2:pop 3:initialize 0:end:");
if (scanf("%d", &resp
) != 1) { break;
}
if (!resp) break;
switch (resp) {
case 1:
push(data);
break;
case 2:
break;
case 3:
initialize();
break;
}
}
display();
return 0;
}
int isFull(void)
{
if (sp >= SIZE) {
return 1;
} else {
return 0;
}
}
int isEmpty(void)
{
if (sp <= 0) {
return 1;
} else {
return 0;
}
}
void push(int value)
{
if (isFull()) {
} else {
stack[sp++] = value;
}
}
int pop(void)
{
if (isEmpty()) {
printf("スタックが空で取り出せませんでした\n"); return 0;
} else {
return stack[--sp];
}
}
void display(void)
{
for (int i = 0; i < sp; i++) {
printf("stack[%d]=%d\n", i
, stack
[i
]); }
}
void initialize(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQoKaW50IHN0YWNrW1NJWkVdOwppbnQgc3A7Cgp2b2lkIHB1c2goaW50IHZhbHVlKTsKaW50IHBvcCh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgZGlzcGxheSh2b2lkKTsKdm9pZCBpbml0aWFsaXplKHZvaWQpOwoKaW50IG1haW4odm9pZCkgewogICAgc3AgPSAwOwogICAgaW50IHJlc3AsIGRhdGE7CgogICAgd2hpbGUgKDEpIHsKICAgICAgICBwcmludGYoIjE6cHVzaCAyOnBvcCAzOmluaXRpYWxpemUgMDplbmQ6Iik7CgogICAgICAgIGlmIChzY2FuZigiJWQiLCAmcmVzcCkgIT0gMSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmICghcmVzcCkgYnJlYWs7CgogICAgICAgIHN3aXRjaCAocmVzcCkgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBwcmludGYoInB1c2g6Iik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWQiLCAmZGF0YSk7CiAgICAgICAgICAgICAgICBwdXNoKGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBwcmludGYoInBvcDogJWRcbiIsIHBvcCgpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgaW5pdGlhbGl6ZSgpOwogICAgICAgICAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgpLliJ3mnJ/ljJbjgZfjgb7jgZfjgZ9cbiIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBwcmludGYoInNwPSVkXG4iLCBzcCk7CiAgICB9CgogICAgZGlzcGxheSgpOwoKICAgIHJldHVybiAwOwp9CgppbnQgaXNGdWxsKHZvaWQpCnsKICAgIGlmIChzcCA+PSBTSVpFKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgppbnQgaXNFbXB0eSh2b2lkKQp7CiAgICBpZiAoc3AgPD0gMCkgewogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQoKdm9pZCBwdXNoKGludCB2YWx1ZSkKewogICAgaWYgKGlzRnVsbCgpKSB7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYzmuoDmna/jgaflhaXjgorjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBzdGFja1tzcCsrXSA9IHZhbHVlOwogICAgfQp9CgppbnQgcG9wKHZvaWQpCnsKICAgIGlmIChpc0VtcHR5KCkpIHsKICAgICAgICBwcmludGYoIuOCueOCv+ODg+OCr+OBjOepuuOBp+WPluOCiuWHuuOBm+OBvuOBm+OCk+OBp+OBl+OBn1xuIik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBzdGFja1stLXNwXTsKICAgIH0KfQoKdm9pZCBkaXNwbGF5KHZvaWQpCnsKICAgIHByaW50ZigiXG4iKTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNwOyBpKyspIHsKICAgICAgICBwcmludGYoInN0YWNrWyVkXT0lZFxuIiwgaSwgc3RhY2tbaV0pOwogICAgfQp9Cgp2b2lkIGluaXRpYWxpemUodm9pZCkKewogICAgc3AgPSAwOwp9