//char型データを格納するためのスタックを構造体として定義し、スタックを実現するための3つの関数を定義せよって問題なんですけど、
//void init(Stack *stack);
//○stackを初期化する
//char push(char c, Stack *stack);
//○stackに c をpushする.返り値はpushが成功したかどうか
//char pop(Stack *stack);
//○stackからデータをpopする.返り値はpopした値.ただし,失敗したときは0を返す。
#include <stdio.h>
#include <stdlib.h>
typedef struct TagStackEntry {
char data;
struct TagStackEntry *next;
} StackEntry;
typedef struct {
StackEntry *top;
} Stack;
void init(Stack *stack)
{
stack->top = NULL;
}
char push(char c, Stack *stack)
{
StackEntry *e;
if (c == 0) return 0;
e
= malloc(sizeof(StackEntry
)); if (e == 0) return '\0';
e->data = c;
e->next = stack->top;
stack->top = e;
return c;
}
char pop(Stack *stack)
{
char c;
StackEntry *next;
if (stack->top == NULL)
return 0;
c = stack->top->data;
next = stack->top->next;
stack->top = next;
return c;
}
int main()
{
// init
Stack stack;
init(&stack);
// push
push('A', &stack);
push('B', &stack);
push('C', &stack);
// pop & show
{
char c;
while ((c = pop(&stack)) != '\0')
}
return 0;
}
Ly9jaGFy5Z6L44OH44O844K/44KS5qC857SN44GZ44KL44Gf44KB44Gu44K544K/44OD44Kv44KS5qeL6YCg5L2T44Go44GX44Gm5a6a576p44GX44CB44K544K/44OD44Kv44KS5a6f54++44GZ44KL44Gf44KB44GuM+OBpOOBrumWouaVsOOCkuWumue+qeOBm+OCiOOBo+OBpuWVj+mhjOOBquOCk+OBp+OBmeOBkeOBqeOAgQovL3ZvaWQgaW5pdChTdGFjayAqc3RhY2spOwovL+KXi3N0YWNr44KS5Yid5pyf5YyW44GZ44KLCi8vY2hhciBwdXNoKGNoYXIgYywgU3RhY2sgKnN0YWNrKTsKLy/il4tzdGFja+OBqyBjIOOCknB1c2jjgZnjgovvvI7ov5TjgorlgKTjga9wdXNo44GM5oiQ5Yqf44GX44Gf44GL44Gp44GG44GLCi8vY2hhciBwb3AoU3RhY2sgKnN0YWNrKTsKLy/il4tzdGFja+OBi+OCieODh+ODvOOCv+OCknBvcOOBmeOCi++8jui/lOOCiuWApOOBr3BvcOOBl+OBn+WApO+8juOBn+OBoOOBl++8jOWkseaVl+OBl+OBn+OBqOOBjeOBrzDjgpLov5TjgZnjgIIKCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+Cgp0eXBlZGVmIHN0cnVjdCBUYWdTdGFja0VudHJ5IHsKICBjaGFyIGRhdGE7CiAgc3RydWN0IFRhZ1N0YWNrRW50cnkgKm5leHQ7Cn0gU3RhY2tFbnRyeTsKCnR5cGVkZWYgc3RydWN0IHsKICBTdGFja0VudHJ5ICp0b3A7Cn0gU3RhY2s7Cgp2b2lkIGluaXQoU3RhY2sgKnN0YWNrKQp7CiAgc3RhY2stPnRvcCA9IE5VTEw7Cn0KCmNoYXIgcHVzaChjaGFyIGMsIFN0YWNrICpzdGFjaykKewogIFN0YWNrRW50cnkgKmU7CiAgaWYgKGMgPT0gMCkgcmV0dXJuIDA7CiAgZSA9IG1hbGxvYyhzaXplb2YoU3RhY2tFbnRyeSkpOwogIGlmIChlID09IDApIHJldHVybiAnXDAnOwogIGUtPmRhdGEgPSBjOwogIGUtPm5leHQgPSBzdGFjay0+dG9wOwogIHN0YWNrLT50b3AgPSBlOwogIHJldHVybiBjOwp9CgpjaGFyIHBvcChTdGFjayAqc3RhY2spCnsKICBjaGFyIGM7CiAgU3RhY2tFbnRyeSAqbmV4dDsKICBpZiAoc3RhY2stPnRvcCA9PSBOVUxMKQogICAgcmV0dXJuIDA7ICAKICBjID0gc3RhY2stPnRvcC0+ZGF0YTsKICBuZXh0ID0gc3RhY2stPnRvcC0+bmV4dDsKICBmcmVlKHN0YWNrLT50b3ApOwogIHN0YWNrLT50b3AgPSBuZXh0OwogIHJldHVybiBjOwp9CgppbnQgbWFpbigpCnsKICAvLyBpbml0CiAgU3RhY2sgc3RhY2s7CiAgaW5pdCgmc3RhY2spOwogIC8vIHB1c2gKICBwdXNoKCdBJywgJnN0YWNrKTsKICBwdXNoKCdCJywgJnN0YWNrKTsKICBwdXNoKCdDJywgJnN0YWNrKTsKICAvLyBwb3AgJiBzaG93CiAgewogICAgY2hhciBjOwogICAgd2hpbGUgKChjID0gcG9wKCZzdGFjaykpICE9ICdcMCcpCiAgICAgIHByaW50ZigiJWNcbiIsIGMpOwogIH0KICByZXR1cm4gMDsKfQo=