//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
= malloc(sizeof(StackEntry
)); /* このエントリは番兵となる */ stack->top->data = '\0';
stack->top->next = NULL;
}
char push(char c, Stack *stack)
{
StackEntry
*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 = stack->top->data;
StackEntry *next = stack->top->next;
if (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+Cgp0eXBlZGVmIHN0cnVjdCBUYWdTdGFja0VudHJ5IHsKICBjaGFyIGRhdGE7CiAgc3RydWN0IFRhZ1N0YWNrRW50cnkgKm5leHQ7Cn0gU3RhY2tFbnRyeTsKCnR5cGVkZWYgc3RydWN0IHsKICBTdGFja0VudHJ5ICp0b3A7Cn0gU3RhY2s7Cgp2b2lkIGluaXQoU3RhY2sgKnN0YWNrKQp7CiAgc3RhY2stPnRvcCA9IG1hbGxvYyhzaXplb2YoU3RhY2tFbnRyeSkpOyAvKiDjgZPjga7jgqjjg7Pjg4jjg6rjga/nlarlhbXjgajjgarjgosgKi8KICBzdGFjay0+dG9wLT5kYXRhID0gJ1wwJzsKICBzdGFjay0+dG9wLT5uZXh0ID0gTlVMTDsKfQoKY2hhciBwdXNoKGNoYXIgYywgU3RhY2sgKnN0YWNrKQp7CiAgU3RhY2tFbnRyeSAqZSA9IG1hbGxvYyhzaXplb2YoU3RhY2tFbnRyeSkpOwogIGlmIChlID09IDApIHJldHVybiAnXDAnOwogIGUtPmRhdGEgPSBjOwogIGUtPm5leHQgPSBzdGFjay0+dG9wOwogIHN0YWNrLT50b3AgPSBlOwogIHJldHVybiBjOwp9CgpjaGFyIHBvcChTdGFjayAqc3RhY2spCnsKICBjaGFyIGMgPSBzdGFjay0+dG9wLT5kYXRhOwogIFN0YWNrRW50cnkgKm5leHQgPSBzdGFjay0+dG9wLT5uZXh0OwogIGlmIChuZXh0KSB7CiAgICBmcmVlKHN0YWNrLT50b3ApOwogICAgc3RhY2stPnRvcCA9IG5leHQ7CiAgfQogIHJldHVybiBjOwp9CgppbnQgbWFpbigpCnsKICAvLyBpbml0CiAgU3RhY2sgc3RhY2s7CiAgaW5pdCgmc3RhY2spOwogIC8vIHB1c2gKICBwdXNoKCdBJywgJnN0YWNrKTsKICBwdXNoKCdCJywgJnN0YWNrKTsKICBwdXNoKCdDJywgJnN0YWNrKTsKICAvLyBwb3AgJiBzaG93CiAgewogICAgY2hhciBjOwogICAgd2hpbGUgKChjID0gcG9wKCZzdGFjaykpICE9ICdcMCcpCiAgICAgIHByaW50ZigiJWNcbiIsIGMpOwogIH0KICByZXR1cm4gMDsKfQo=