#include <stdio.h>
#include <stdlib.h>
typedef struct _DoubleLinkList {
size_t p;
int value;
}DoubleLinkList;
#define NextNode(prev,curr) (DoubleLinkList *)((size_t)prev ^ curr->p)
#define PrevNode(curr,next) (DoubleLinkList *)((size_t)next ^ curr->p)
#define MakePointer(prev, next) ((size_t)prev ^ (size_t)next)
#define InsertFirst(head, value) Insert(head, head, value)
DoubleLinkList *Create()
{
DoubleLinkList *head = malloc(sizeof(DoubleLinkList));
if(head == NULL)
return NULL;
head->p = 0;
head->value = 0;
return head;
}
void Insert(DoubleLinkList *head, DoubleLinkList *node, int value)
{
DoubleLinkList *newnode = malloc(sizeof(DoubleLinkList));
newnode->value = value;
if(head->p == 0)
{
&