#include<stdio.h>
#include<stdlib.h>
/* struct */
typedef struct node {
int value;
struct node *next;
} NODE;
NODE *create_node(int value)
{
NODE *new;
if (!(new
=malloc(sizeof(NODE
)))) return NULL
; new->value = value;
new->next= NULL;
return new;
}
NODE *append_node(NODE *head, int value)
{
NODE *new;
NODE *current_node = head;
NODE *anterior_node = NULL;
if((new = create_node(value)) == NULL) return NULL;
while(current_node != NULL && current_node->value < value)
{
anterior_node = current_node;
current_node = current_node->next;
}
if (anterior_node == NULL)
{
new->next = head;
head = new;
}
else
{
new->next = current_node;
anterior_node->next = new;
}
}
void print_list(NODE *head)
{
NODE *current_node = head;
while(current_node != NULL){
printf("%d\n",current_node
->value
); current_node = current_node->next;
}
}
int main(void)
{
NODE *head = create_node(10);
append_node(head, 20);
print_list(head);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CgoKCi8qIHN0cnVjdCAqLwoKdHlwZWRlZiBzdHJ1Y3Qgbm9kZSB7CiAgICBpbnQgdmFsdWU7CiAgICBzdHJ1Y3Qgbm9kZSAqbmV4dDsKfSBOT0RFOwoKCk5PREUgKmNyZWF0ZV9ub2RlKGludCB2YWx1ZSkKewogICAgTk9ERSAqbmV3OwoKICAgIGlmICghKG5ldyA9bWFsbG9jKHNpemVvZihOT0RFKSkpKSByZXR1cm4gTlVMTDsKICAgIG5ldy0+dmFsdWUgPSB2YWx1ZTsKICAgIG5ldy0+bmV4dD0gTlVMTDsKCiAgICByZXR1cm4gbmV3Owp9CgpOT0RFICphcHBlbmRfbm9kZShOT0RFICpoZWFkLCBpbnQgdmFsdWUpCnsKICAgIE5PREUgKm5ldzsKICAgIE5PREUgKmN1cnJlbnRfbm9kZSA9IGhlYWQ7CiAgICBOT0RFICphbnRlcmlvcl9ub2RlID0gTlVMTDsKCiAgICBpZigobmV3ID0gY3JlYXRlX25vZGUodmFsdWUpKSA9PSBOVUxMKSByZXR1cm4gTlVMTDsKICAgIAogICAgd2hpbGUoY3VycmVudF9ub2RlICE9IE5VTEwgJiYgY3VycmVudF9ub2RlLT52YWx1ZSA8IHZhbHVlKQogICAgeyAgICAKICAgICAgICBhbnRlcmlvcl9ub2RlID0gY3VycmVudF9ub2RlOwogICAgICAgIGN1cnJlbnRfbm9kZSA9IGN1cnJlbnRfbm9kZS0+bmV4dDsKICAgIH0KICAgIAogICAgaWYgKGFudGVyaW9yX25vZGUgPT0gTlVMTCkKICAgIHsKICAgICAgICBuZXctPm5leHQgPSBoZWFkOwogICAgICAgIGhlYWQgPSBuZXc7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgbmV3LT5uZXh0ID0gY3VycmVudF9ub2RlOwogICAgICAgIGFudGVyaW9yX25vZGUtPm5leHQgPSBuZXc7CiAgICB9Cn0KCnZvaWQgcHJpbnRfbGlzdChOT0RFICpoZWFkKQp7CiAgICBOT0RFICpjdXJyZW50X25vZGUgPSBoZWFkOwogICAgd2hpbGUoY3VycmVudF9ub2RlICE9IE5VTEwpewogICAgICAgIHByaW50ZigiJWRcbiIsY3VycmVudF9ub2RlLT52YWx1ZSk7CiAgICAgICAgY3VycmVudF9ub2RlID0gY3VycmVudF9ub2RlLT5uZXh0OwogICAgfQp9CgoKaW50IG1haW4odm9pZCkKewogICAgTk9ERSAqaGVhZCA9IGNyZWF0ZV9ub2RlKDEwKTsKCgogICAgYXBwZW5kX25vZGUoaGVhZCwgMjApOwogICAgcHJpbnRfbGlzdChoZWFkKTsKICAgIHJldHVybiAwOwp9