#include <stdio.h>
#include <stdlib.h>
typedef struct ElemTag {
int value;
struct ElemTag *next;
struct ElemTag *prev;
} ELEMENT;
void InsertElement(ELEMENT **head, int value)
{
ELEMENT *newelement;
ELEMENT *current;
newelement
= (ELEMENT
*) malloc(sizeof(ELEMENT
)); newelement->value = value;
newelement->next = NULL;
if (!*head)
*head = newelement;
else
{
current = *head;
while (current->next)
current = current->next;
current->next = newelement;
}
}
void PrintList(ELEMENT *elem)
{
while (elem)
{
printf("Elem=%d\n", elem
->value
); elem = elem->next;
}
}
int main(void)
{
ELEMENT *head = NULL;
int values[] = {10, 50, 60, 30, 400, 12, -8, 77, 4, 5, 7, 6, 88, 0};
int i;
for (i=0; i<sizeof(values)/sizeof(values[0]); i++)
InsertElement(&head, values[i]);
PrintList(head);
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IEVsZW1UYWcgewogIGludCB2YWx1ZTsKICBzdHJ1Y3QgRWxlbVRhZyAqbmV4dDsKICBzdHJ1Y3QgRWxlbVRhZyAqcHJldjsKfSBFTEVNRU5UOwoKdm9pZCBJbnNlcnRFbGVtZW50KEVMRU1FTlQgKipoZWFkLCBpbnQgdmFsdWUpCnsKICBFTEVNRU5UICpuZXdlbGVtZW50OwogIEVMRU1FTlQgKmN1cnJlbnQ7CiAgCiAgbmV3ZWxlbWVudCA9IChFTEVNRU5UICopIG1hbGxvYyhzaXplb2YoRUxFTUVOVCkpOwogIG5ld2VsZW1lbnQtPnZhbHVlID0gdmFsdWU7CiAgbmV3ZWxlbWVudC0+bmV4dCA9IE5VTEw7CgogIGlmICghKmhlYWQpCiAgICAqaGVhZCA9IG5ld2VsZW1lbnQ7CiAgZWxzZQogIHsKICAgIGN1cnJlbnQgPSAqaGVhZDsKCQogICAgd2hpbGUgKGN1cnJlbnQtPm5leHQpCiAgICAgIGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0OwoJCgljdXJyZW50LT5uZXh0ID0gbmV3ZWxlbWVudDsKICB9Cn0KIAp2b2lkIFByaW50TGlzdChFTEVNRU5UICplbGVtKQp7CiAgd2hpbGUgKGVsZW0pCiAgewogICAgcHJpbnRmKCJFbGVtPSVkXG4iLCBlbGVtLT52YWx1ZSk7CgllbGVtID0gZWxlbS0+bmV4dDsKICB9Cn0KCmludCBtYWluKHZvaWQpCnsKICBFTEVNRU5UICpoZWFkID0gTlVMTDsKICAKICBpbnQgdmFsdWVzW10gPSB7MTAsIDUwLCA2MCwgMzAsIDQwMCwgMTIsIC04LCA3NywgNCwgNSwgNywgNiwgODgsIDB9OwogIGludCBpOwoKICBmb3IgKGk9MDsgaTxzaXplb2YodmFsdWVzKS9zaXplb2YodmFsdWVzWzBdKTsgaSsrKQogICAgSW5zZXJ0RWxlbWVudCgmaGVhZCwgdmFsdWVzW2ldKTsKCQogIFByaW50TGlzdChoZWFkKTsKfQ==