#include <stdio.h>
#define SIZE 5
int stack[SIZE];
int sp;
void push(int value);
int pop(void);
int main(void)
{
sp = 0;
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) {
} else {
stack[sp++] = value;
}
}
int pop(void)
{
if (sp <= 0) {
printf("スタックが空で取り出せませんでした\n"); return 0;
} else {
return stack[--sp];
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQppbnQgc3RhY2tbU0laRV07CmludCBzcDsKCnZvaWQgcHVzaChpbnQgdmFsdWUpOwppbnQgcG9wKHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogICAgc3AgPSAwOwogICAgaW50IHJlc3AsIGRhdGE7CgogICAgd2hpbGUgKDEpIHsKICAgICAgICBwcmludGYoIjE6cHVzaCAyOnBvcCAwOmVuZCA6ICIpOwogICAgICAgIHNjYW5mKCIlZCIsICZyZXNwKTsKCiAgICAgICAgaWYgKCFyZXNwKSBicmVhazsKCiAgICAgICAgc3dpdGNoIChyZXNwKSB7CiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIHByaW50ZigicHVzaCA6ICIpOwogICAgICAgICAgICAgICAgc2NhbmYoIiVkIiwgJmRhdGEpOwogICAgICAgICAgICAgICAgcHVzaChkYXRhKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgcHJpbnRmKCJwb3AgOiAiKTsKICAgICAgICAgICAgICAgIHBvcCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHByaW50Zigic3A9JWRcbiIsIHNwKTsKICAgIH0KCiAgICBwcmludGYoIlxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IHNwOyBpKyspIHsKICAgICAgICBwcmludGYoInN0YWNrWyVkXT0lZCBcbiIsIGksIHN0YWNrW2ldKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQp2b2lkIHB1c2goaW50IHZhbHVlKQp7CiAgICBpZiAoc3AgPj0gU0laRSkgewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM5rqA5p2v44Gn5YWl44KK44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgIH0gZWxzZSB7CiAgICAgICAgc3RhY2tbc3ArK10gPSB2YWx1ZTsKICAgIH0KfQoKaW50IHBvcCh2b2lkKQp7CiAgICBpZiAoc3AgPD0gMCkgewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM56m644Gn5Y+W44KK5Ye644Gb44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHN0YWNrWy0tc3BdOwogICAgfQp9Cg==