#include <stdio.h>
#include <stdlib.h>
struct list {
int key;
struct list *prev, *next;
};
struct list *append(struct list **l, int k)
{
(*l)->key = k;
(*l)->next = NULL;
return *l;
}
void print(struct list *node)
{
while(node)
{
node = node->next;
}
}
int main(void)
{
struct list *l, *head;
int i;
head = append(&l, -1);
for (i = 0; i < 42; ++i)
l = append(&l, i);
print(head);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBsaXN0IHsKICAgIGludCBrZXk7CiAgICBzdHJ1Y3QgbGlzdCAqcHJldiwgKm5leHQ7Cn07CgpzdHJ1Y3QgbGlzdCAqYXBwZW5kKHN0cnVjdCBsaXN0ICoqbCwgaW50IGspCnsKICAgICpsID0gbWFsbG9jKHNpemVvZiAqbCk7CiAgICAoKmwpLT5rZXkgPSBrOwogICAgKCpsKS0+bmV4dCA9IE5VTEw7CiAgICByZXR1cm4gKmw7Cn0KCnZvaWQgcHJpbnQoc3RydWN0IGxpc3QgKm5vZGUpCnsKCXdoaWxlKG5vZGUpCgl7CgkJcHJpbnRmKCIlZFxuIiwgbm9kZS0+a2V5KTsKCQlub2RlID0gbm9kZS0+bmV4dDsKCX0KfQoKaW50IG1haW4odm9pZCkKewogICAgc3RydWN0IGxpc3QgKmwsICpoZWFkOwogICAgaW50IGk7CgogICAgaGVhZCA9IGFwcGVuZCgmbCwgLTEpOwogICAgZm9yIChpID0gMDsgaSA8IDQyOyArK2kpCiAgICAgICAgbCA9IGFwcGVuZCgmbCwgaSk7CQogICAgCiAgICBwcmludChoZWFkKTsKfQo=