#include <stdio.h>
#include <stdlib.h>
typedef struct stack
{
int data;
struct stack *next;
} stack;
void push_s(stack** s, int data)
{
while (*s)
s = &(*s)->next;
(*s)->data = data;
(*s)->next = NULL;
}
void print_s(stack const *s)
{
for (;s;s = s->next)
printf("%p: data = %d, next = %p\n", s
, s
->data
, s
->next
); }
void free_s(stack **s)
{
while (*s)
{
stack *tmp = *s;
*s = tmp->next;
}
}
int main (void)
{
stack* s = NULL;
push_s(&s,2);
push_s(&s,4);
push_s(&s,6);
push_s(&s,8);
print_s(s);
free_s(&s);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IHN0YWNrCnsKICAgIGludCBkYXRhOwogICAgc3RydWN0IHN0YWNrICpuZXh0Owp9IHN0YWNrOwoKCnZvaWQgcHVzaF9zKHN0YWNrKiogcywgaW50IGRhdGEpCnsKICAgIHdoaWxlICgqcykKICAgICAgICBzID0gJigqcyktPm5leHQ7CiAgICAKICAgICpzID0gbWFsbG9jKHNpemVvZigqKnMpKTsKICAgICgqcyktPmRhdGEgPSBkYXRhOwogICAgKCpzKS0+bmV4dCA9IE5VTEw7Cn0KCnZvaWQgcHJpbnRfcyhzdGFjayBjb25zdCAqcykKewogICAgZm9yICg7cztzID0gcy0+bmV4dCkKICAgICAgICBwcmludGYoIiVwOiBkYXRhID0gJWQsIG5leHQgPSAlcFxuIiwgcywgcy0+ZGF0YSwgcy0+bmV4dCk7Cn0KCnZvaWQgZnJlZV9zKHN0YWNrICoqcykKewogICAgd2hpbGUgKCpzKQogICAgewogICAgICAgIHN0YWNrICp0bXAgPSAqczsKICAgICAgICAqcyA9IHRtcC0+bmV4dDsKICAgICAgICBmcmVlKHRtcCk7CiAgICB9Cn0KCmludCBtYWluICh2b2lkKQp7CiAgICBzdGFjayogcyA9IE5VTEw7CiAgICAKICAgIHB1c2hfcygmcywyKTsKICAgIHB1c2hfcygmcyw0KTsKICAgIHB1c2hfcygmcyw2KTsKICAgIHB1c2hfcygmcyw4KTsKICAgIAogICAgcHJpbnRfcyhzKTsKICAgIGZyZWVfcygmcyk7CiAgICAKICAgIHJldHVybiAwOwp9