#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int data;
struct node *next;
struct node *prev;
} node;
node *createNode(int data)
{
node *ptr = NULL;
if(ptr == NULL)
{
printf("space could not be allocated\n"); return NULL;
}
ptr->data = data;
ptr->next = NULL;
ptr->prev = NULL;
return ptr;
}
node *tailInsert(node *head, int data)
{
if(head->next == NULL)
{
node *temp;
temp = createNode(data);
temp->next = NULL;
temp->prev = head;
head->next = temp;
return head;
}
tailInsert(head->next, data);
return head;
}
node *frontInsert(node *head, int data)
{
node *newHead;
if(head == NULL)
{
return createNode(data);
}
newHead = createNode(data);
newHead->next = head;
newHead->prev = NULL;
head->prev = newHead;
return newHead;
}
node *destroy_linked_list(node *list)
{
/*if (list == NULL)
return NULL;
// Free the entire list within this struct.
destroy_list(list->head);
// Free the struct itself.
free(list);
*/
return NULL;
}
void printList(node *head)
{
if (head == NULL)
{
return;
}
for(; head != NULL; head = head->next)
}
int main(void)
{
node *head = NULL;
head = frontInsert(head, 1);
head = frontInsert(head, 2);
head = frontInsert(head, 3);
head = tailInsert(head, 4);
head = tailInsert(head, 5);
head = tailInsert(head, 6);
printList(head);
//system("PAUSE");
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnR5cGVkZWYgc3RydWN0IG5vZGUKewogICBpbnQgZGF0YTsKICAgc3RydWN0IG5vZGUgKm5leHQ7CiAgIHN0cnVjdCBub2RlICpwcmV2Owp9IG5vZGU7Cgpub2RlICpjcmVhdGVOb2RlKGludCBkYXRhKQp7Cglub2RlICpwdHIgPSBOVUxMOwoJcHRyID0gbWFsbG9jKHNpemVvZihub2RlKSk7CglpZihwdHIgPT0gTlVMTCkKCXsKCQlwcmludGYoInNwYWNlIGNvdWxkIG5vdCBiZSBhbGxvY2F0ZWRcbiIpOwoJCXJldHVybiBOVUxMOwoJfQoKCXB0ci0+ZGF0YSA9IGRhdGE7CglwdHItPm5leHQgPSBOVUxMOwoJcHRyLT5wcmV2ID0gTlVMTDsKCglyZXR1cm4gcHRyOwp9Cgpub2RlICp0YWlsSW5zZXJ0KG5vZGUgKmhlYWQsIGludCBkYXRhKQp7CgkJaWYoaGVhZC0+bmV4dCA9PSBOVUxMKQoJewoJCW5vZGUgKnRlbXA7CgkJdGVtcCA9IGNyZWF0ZU5vZGUoZGF0YSk7CgkJdGVtcC0+bmV4dCA9IE5VTEw7CgkJdGVtcC0+cHJldiA9IGhlYWQ7CgkJaGVhZC0+bmV4dCA9IHRlbXA7CgkJcmV0dXJuIGhlYWQ7Cgl9Cgl0YWlsSW5zZXJ0KGhlYWQtPm5leHQsIGRhdGEpOwoJcmV0dXJuIGhlYWQ7Cn0KCm5vZGUgKmZyb250SW5zZXJ0KG5vZGUgKmhlYWQsIGludCBkYXRhKQp7Cglub2RlICpuZXdIZWFkOwoKCWlmKGhlYWQgPT0gTlVMTCkKCXsKCQlyZXR1cm4gY3JlYXRlTm9kZShkYXRhKTsKCX0KCgluZXdIZWFkID0gY3JlYXRlTm9kZShkYXRhKTsKCW5ld0hlYWQtPm5leHQgPSBoZWFkOwoJbmV3SGVhZC0+cHJldiA9IE5VTEw7CgloZWFkLT5wcmV2ID0gbmV3SGVhZDsKCglyZXR1cm4gbmV3SGVhZDsKfQoKbm9kZSAqZGVzdHJveV9saW5rZWRfbGlzdChub2RlICpsaXN0KQp7CgkvKmlmIChsaXN0ID09IE5VTEwpCgkJcmV0dXJuIE5VTEw7CgoJLy8gRnJlZSB0aGUgZW50aXJlIGxpc3Qgd2l0aGluIHRoaXMgc3RydWN0LgoJZGVzdHJveV9saXN0KGxpc3QtPmhlYWQpOwoKCS8vIEZyZWUgdGhlIHN0cnVjdCBpdHNlbGYuCglmcmVlKGxpc3QpOwoKCSovCglyZXR1cm4gTlVMTDsKfQoKdm9pZCBwcmludExpc3Qobm9kZSAqaGVhZCkKewoJaWYgKGhlYWQgPT0gTlVMTCkKCXsKCQlwcmludGYoIkVtcHR5IExpc3RcbiIpOwoJCXJldHVybjsKCX0KCglmb3IoOyBoZWFkICE9IE5VTEw7IGhlYWQgPSBoZWFkLT5uZXh0KQoJCXByaW50ZigiJWQgIiwgaGVhZC0+ZGF0YSk7CgoJcHJpbnRmKCJcbiIpOwp9CgppbnQgbWFpbih2b2lkKQp7Cglub2RlICpoZWFkID0gTlVMTDsKCgloZWFkID0gZnJvbnRJbnNlcnQoaGVhZCwgMSk7CgloZWFkID0gZnJvbnRJbnNlcnQoaGVhZCwgMik7CgloZWFkID0gZnJvbnRJbnNlcnQoaGVhZCwgMyk7CgloZWFkID0gdGFpbEluc2VydChoZWFkLCA0KTsKCWhlYWQgPSB0YWlsSW5zZXJ0KGhlYWQsIDUpOwoJaGVhZCA9IHRhaWxJbnNlcnQoaGVhZCwgNik7CgoJcHJpbnRMaXN0KGhlYWQpOwoKCS8vc3lzdGVtKCJQQVVTRSIpOwoJcmV0dXJuIDA7Cn0=