#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)
{
initialize();
int resp, data;
while(1){
printf("1:push 2:pop 3:initialize 0:end : \n");
if(resp == 0) break;
switch(resp){
push(data);
break;
case 2:pop();
break;
case 3:initialize();
break;
}
}
display();
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];
}
}
int isFull(void)
{
if(sp >= SIZE){
return 1;
} else {
return 0;
}
}
int isEmpty(void)
{
if(sp <= 0){
return 1;
} else {
return 0;
}
}
void display(void)
{
for(int i = 0; i < sp; i++){
printf("stack[%d]=%d\n", i
, stack
[i
]); }
}
void initialize(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQppbnQgc3RhY2tbU0laRV07CmludCBzcDsKCnZvaWQgcHVzaChpbnQgdmFsdWUpOwppbnQgcG9wKHZvaWQpOwppbnQgaXNGdWxsKHZvaWQpOwppbnQgaXNFbXB0eSh2b2lkKTsKdm9pZCBkaXNwbGF5KHZvaWQpOwp2b2lkIGluaXRpYWxpemUodm9pZCk7CgppbnQgbWFpbih2b2lkKQp7CiAgICBpbml0aWFsaXplKCk7CiAgICBpbnQgcmVzcCwgZGF0YTsKCiAgICB3aGlsZSgxKXsKICAgICAgICBwcmludGYoIjE6cHVzaCAgMjpwb3AgIDM6aW5pdGlhbGl6ZSAgMDplbmQgOiBcbiIpOwogICAgICAgIHNjYW5mKCIlZCIsICZyZXNwKTsKCiAgICAgICAgaWYocmVzcCA9PSAwKSBicmVhazsKCiAgICAgICAgc3dpdGNoKHJlc3ApewogICAgICAgICAgICBjYXNlIDE6cHJpbnRmKCJwdXNo44GZ44KL5YCk77yaIik7IHNjYW5mKCIlZCIsICZkYXRhKTsKICAgICAgICAgICAgICAgICAgIHB1c2goZGF0YSk7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOnBvcCgpOwogICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzppbml0aWFsaXplKCk7CiAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgcHJpbnRmKCJzcD0lZFxuIiwgc3ApOwogICAgZGlzcGxheSgpOwogICAgcmV0dXJuIDA7Cn0KCgp2b2lkIHB1c2goaW50IHZhbHVlKQp7CiAgICBpZiggaXNGdWxsKCkgKXsKICAgICAgICBwcmludGYoIuOCueOCv+ODg+OCr+OBjOa6gOadr+OBp+WFpeOCiuOBvuOBm+OCk+OBp+OBl+OBn1xuIik7CiAgICB9IGVsc2UgewogICAgICAgIHN0YWNrW3NwKytdID0gdmFsdWU7CiAgICB9Cn0KCmludCBwb3Aodm9pZCkKewogICAgaWYoIGlzRW1wdHkoKSApewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM56m644Gn5Y+W44KK5Ye644Gb44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHN0YWNrWy0tc3BdOwogICAgfQp9CgppbnQgaXNGdWxsKHZvaWQpCnsKICAgIGlmKHNwID49IFNJWkUpewogICAgICAgIHJldHVybiAxOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQoKaW50IGlzRW1wdHkodm9pZCkKewogICAgaWYoc3AgPD0gMCl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9Cgp2b2lkIGRpc3BsYXkodm9pZCkKewogICAgcHJpbnRmKCJcbiIpOwogICAgZm9yKGludCBpID0gMDsgaSA8IHNwOyBpKyspewogICAgICAgIHByaW50Zigic3RhY2tbJWRdPSVkXG4iLCBpLCBzdGFja1tpXSk7CiAgICB9Cn0KCnZvaWQgaW5pdGlhbGl6ZSh2b2lkKQp7CiAgICBzcCA9IDA7Cn0=