#include <stdio.h>
struct list{
int data;
struct list *next;
};
struct list * insert(struct list *node, int data){
struct list
*tmp
= (struct list
*)malloc(sizeof(struct list
));
if (tmp != NULL){
tmp->data = data;
if (node != NULL){
tmp->next = node->next;
node->next = tmp;
}else{
tmp->next = NULL;
}
}
return tmp;
}
int main(void) {
struct list *root = NULL;
struct list **tmp = &root;
for(int i = 1; i < 10; i++){
*tmp = insert(*tmp, i*16 % 9);
tmp = &(*tmp)->next;
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgbGlzdHsKCWludCBkYXRhOwoJc3RydWN0IGxpc3QgKm5leHQ7Cn07CgpzdHJ1Y3QgbGlzdCAqIGluc2VydChzdHJ1Y3QgbGlzdCAqbm9kZSwgaW50IGRhdGEpewogICAgc3RydWN0IGxpc3QgKnRtcCA9IChzdHJ1Y3QgbGlzdCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgbGlzdCkpOwoKICAgIGlmICh0bXAgIT0gTlVMTCl7CiAgICAgICAgdG1wLT5kYXRhID0gZGF0YTsKICAgICAgICBpZiAobm9kZSAhPSBOVUxMKXsKICAgICAgICAgICAgdG1wLT5uZXh0ID0gbm9kZS0+bmV4dDsKICAgICAgICAgICAgbm9kZS0+bmV4dCA9IHRtcDsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgdG1wLT5uZXh0ID0gTlVMTDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHRtcDsKfQoKCmludCBtYWluKHZvaWQpIHsKCXN0cnVjdCBsaXN0ICpyb290ID0gTlVMTDsKCXN0cnVjdCBsaXN0ICoqdG1wID0gJnJvb3Q7Cglmb3IoaW50IGkgPSAxOyBpIDwgMTA7IGkrKyl7CgkJKnRtcCA9IGluc2VydCgqdG1wLCBpKjE2ICUgOSk7CiAgICAgICAgdG1wID0gJigqdG1wKS0+bmV4dDsKCX0KCXJldHVybiAwOwp9Cg==