#include <stdio.h>
#define SIZE 5
int stack[SIZE];
int sp = 0;
void push(int value);
int pop(void);
int main(void) {
int resp, data;
while(1) {
printf("1: push 2: pop 0: end = ");
if(!resp) break;
switch(resp) {
case 1:
push(data);
break;
case 2:
pop();
break;
}
for(int i = 0; i < sp; i++) {
printf("stack[%d]=%d\n", i
, stack
[i
]); }
}
return 0;
}
void push(int value) {
if(sp >= SIZE) {
printf("スタックが満杯で入りませんでした。\n"); } else {
stack[sp++] = value;
}
}
int pop(void) {
if(sp <= 0) {
printf("スタックが空で取り出せませんでした。\n"); return 0;
} else {
return stack[--sp];
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQppbnQgc3RhY2tbU0laRV07CmludCBzcCA9IDA7Cgp2b2lkIHB1c2goaW50IHZhbHVlKTsKaW50IHBvcCh2b2lkKTsKCmludCBtYWluKHZvaWQpIHsKICAgIGludCByZXNwLCBkYXRhOwogICAgCiAgICB3aGlsZSgxKSB7CiAgICAgICAgcHJpbnRmKCIxOiBwdXNoICAyOiBwb3AgIDA6IGVuZCA9ICIpOwogICAgICAgIHNjYW5mKCIlZCIsICZyZXNwKTsKCiAgICAgICAgaWYoIXJlc3ApIGJyZWFrOwoKICAgICAgICBzd2l0Y2gocmVzcCkgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICBwcmludGYoInB1c2ggOiAiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlZCIsICZkYXRhKTsKICAgICAgICAgICAgICAgIHB1c2goZGF0YSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgcG9wKCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHByaW50Zigic3A9JWRcbiIsIHNwKTsKCiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzcDsgaSsrKSB7CiAgICAgICAgICAgIHByaW50Zigic3RhY2tbJWRdPSVkXG4iLCBpLCBzdGFja1tpXSk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9Cgp2b2lkIHB1c2goaW50IHZhbHVlKSB7CiAgICBpZihzcCA+PSBTSVpFKSB7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYzmuoDmna/jgaflhaXjgorjgb7jgZvjgpPjgafjgZfjgZ/jgIJcbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBzdGFja1tzcCsrXSA9IHZhbHVlOwogICAgfQp9CgppbnQgcG9wKHZvaWQpIHsKICAgIGlmKHNwIDw9IDApIHsKICAgICAgICBwcmludGYoIuOCueOCv+ODg+OCr+OBjOepuuOBp+WPluOCiuWHuuOBm+OBvuOBm+OCk+OBp+OBl+OBn+OAglxuIik7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBzdGFja1stLXNwXTsKICAgIH0KfQ==