#include <stdio.h>
#include <stdlib.h>
struct node {
int value;
struct node *next;
};
void display_list(struct node *list) {
struct node *cur;
printf("list: %p, values:", list
); for(cur = list; cur != NULL; cur = cur->next) {
}
}
struct node* add_to_front_of_list(struct node *list, int n) {
struct node
*node
= malloc(sizeof(node
)); node->value = n;
node->next = list;
return node;
}
struct node* free_node(struct node *n)
{
struct node *next = n->next;
return next;
}
struct node* delete_from_list(struct node *list, int n) {
struct node **ptr = &list;
while (*ptr != NULL) {
if ((*ptr)->value == n) {
*ptr = free_node(*ptr);
break;
}
ptr = &((*ptr)->next);
}
return list;
}
int main(void) {
struct node *list = NULL;
for(int i = 5; i > 0; --i) {
list = add_to_front_of_list(list, i);
}
display_list(list);
list = delete_from_list(list, 1);
display_list(list);
list = delete_from_list(list, 3);
display_list(list);
list = delete_from_list(list, 5);
display_list(list);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlIHsKICAgIGludCB2YWx1ZTsKICAgIHN0cnVjdCBub2RlICpuZXh0Owp9OwoKdm9pZCBkaXNwbGF5X2xpc3Qoc3RydWN0IG5vZGUgKmxpc3QpIHsKCXN0cnVjdCBub2RlICpjdXI7CglwcmludGYoImxpc3Q6ICVwLCB2YWx1ZXM6IiwgbGlzdCk7Cglmb3IoY3VyID0gbGlzdDsgY3VyICE9IE5VTEw7IGN1ciA9IGN1ci0+bmV4dCkgewoJCXByaW50ZigiICVkIiwgY3VyLT52YWx1ZSk7Cgl9CglwcmludGYoIlxuIik7Cn0KCnN0cnVjdCBub2RlKiBhZGRfdG9fZnJvbnRfb2ZfbGlzdChzdHJ1Y3Qgbm9kZSAqbGlzdCwgaW50IG4pIHsKCXN0cnVjdCBub2RlICpub2RlID0gbWFsbG9jKHNpemVvZihub2RlKSk7Cglub2RlLT52YWx1ZSA9IG47Cglub2RlLT5uZXh0ID0gbGlzdDsKCXJldHVybiBub2RlOwp9CgpzdHJ1Y3Qgbm9kZSogZnJlZV9ub2RlKHN0cnVjdCBub2RlICpuKQp7CiAgICBzdHJ1Y3Qgbm9kZSAqbmV4dCA9IG4tPm5leHQ7CiAgICBmcmVlKG4pOwogICAgcmV0dXJuIG5leHQ7Cn0KCnN0cnVjdCBub2RlKiBkZWxldGVfZnJvbV9saXN0KHN0cnVjdCBub2RlICpsaXN0LCBpbnQgbikgewogICAgc3RydWN0IG5vZGUgKipwdHIgPSAmbGlzdDsKICAgIHdoaWxlICgqcHRyICE9IE5VTEwpIHsKICAgICAgICBpZiAoKCpwdHIpLT52YWx1ZSA9PSBuKSB7CiAgICAgICAgICAgICpwdHIgPSBmcmVlX25vZGUoKnB0cik7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBwdHIgPSAmKCgqcHRyKS0+bmV4dCk7CiAgICB9CiAgICByZXR1cm4gbGlzdDsKfQoKaW50IG1haW4odm9pZCkgewoJc3RydWN0IG5vZGUgKmxpc3QgPSBOVUxMOwoKCWZvcihpbnQgaSA9IDU7IGkgPiAwOyAtLWkpIHsKCQlsaXN0ID0gYWRkX3RvX2Zyb250X29mX2xpc3QobGlzdCwgaSk7Cgl9CgoJZGlzcGxheV9saXN0KGxpc3QpOwoJCglsaXN0ID0gZGVsZXRlX2Zyb21fbGlzdChsaXN0LCAxKTsKCWRpc3BsYXlfbGlzdChsaXN0KTsKCglsaXN0ID0gZGVsZXRlX2Zyb21fbGlzdChsaXN0LCAzKTsKCWRpc3BsYXlfbGlzdChsaXN0KTsKCglsaXN0ID0gZGVsZXRlX2Zyb21fbGlzdChsaXN0LCA1KTsKCWRpc3BsYXlfbGlzdChsaXN0KTsKCglyZXR1cm4gMDsKfQ==