#include <stdio.h>
#include <stdlib.h>
typedef void Elem;
typedef struct stos {
Elem* e;
struct stos *next;
} Stos;
Elem* pop(Stos **s) {
if (*s
==NULL
) exit(EXIT_FAILURE
); Stos* help = *s;
Elem* e = help->e;
*s = (*s)->next;
return e;
}
void push(Stos **ss, Elem* elem) {
Stos *help;
help
= (Stos
*)malloc(sizeof(Stos
)); help->e = elem;
help->next = *ss;
*ss = help;
}
int main()
{
Stos *s = NULL;
Stos *s2 = NULL;
int *a
= (int*)malloc(sizeof(int)); *a=10;
push(&s, a);
char *b
=(char*)malloc(sizeof(char)); *b='a';
push(&s2, b);
*a=14;
push(&s, a);
a = (int*)pop(&s);
a = (int*)pop(&s);
b = (char*)pop(&s2);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCgp0eXBlZGVmIHZvaWQgRWxlbTsKCnR5cGVkZWYgc3RydWN0IHN0b3MgewogIEVsZW0qIGU7CiAgc3RydWN0IHN0b3MgKm5leHQ7Cn0gU3RvczsKCkVsZW0qIHBvcChTdG9zICoqcykgewogICAgaWYgKCpzPT1OVUxMKSBleGl0KEVYSVRfRkFJTFVSRSk7CiAgICBTdG9zKiBoZWxwID0gKnM7CiAgICBFbGVtKiBlID0gaGVscC0+ZTsKICAgICpzID0gKCpzKS0+bmV4dDsKICAgIGZyZWUoaGVscCk7CiAgICByZXR1cm4gZTsKfQoKdm9pZCBwdXNoKFN0b3MgKipzcywgRWxlbSogZWxlbSkgewogICBTdG9zICpoZWxwOwoKICAgaGVscCA9IChTdG9zICopbWFsbG9jKHNpemVvZihTdG9zKSk7CiAgIGhlbHAtPmUgPSBlbGVtOwogICBoZWxwLT5uZXh0ID0gKnNzOwogICAqc3MgPSBoZWxwOwp9CgoKCgppbnQgbWFpbigpCnsKICAgIAlTdG9zICpzID0gTlVMTDsKICAgIAlTdG9zICpzMiA9IE5VTEw7CiAgICAJaW50ICphID0gKGludCopbWFsbG9jKHNpemVvZihpbnQpKTsKICAgIAkqYT0xMDsKICAgICAgICBwdXNoKCZzLCBhKTsKCiAgICAgICAgY2hhciAqYj0oY2hhciopbWFsbG9jKHNpemVvZihjaGFyKSk7CiAgICAgICAgKmI9J2EnOwogICAgICAgIHB1c2goJnMyLCBiKTsKCiAgICAgICAgYT0oaW50KiltYWxsb2Moc2l6ZW9mKGludCkpOwogICAgICAgICphPTE0OwogICAgICAgIHB1c2goJnMsIGEpOwoKICAgICAgICBhID0gKGludCopcG9wKCZzKTsKICAgICAgICBwcmludGYoIiVkXG4iLCAqYSk7CiAgICAgICAgZnJlZShhKTsKICAgICAgICBhID0gKGludCopcG9wKCZzKTsKICAgICAgICBwcmludGYoIiVkXG4iLCAqYSk7CiAgICAgICAgZnJlZShhKTsKCiAgICAgICAgYiA9IChjaGFyKilwb3AoJnMyKTsKICAgICAgICBwcmludGYoIiVjXG4iLCAqYik7CiAgICAgICAgZnJlZShiKTsKICAgICAgICByZXR1cm4gMDsKfQo=