双向链表:
数据结构:
typedef struct doublelist {
int data; //数据域
struct doublelist *prev; //指针域,前向指针
struct doublelist *next; //指针域,后向指针
}DOUBLELIST;
创建一个节点:
DOUBLELIST *CreateList(int data)
{
DOUBLELIST *P = NULL;
P = malloc(sizeof(DOUBLELIST));
if(p == NULL)
{
printf("malloc failed\n");
return 0;
}
p->data = data;
p->prev = NULL;
P->next = NULL;
return p;
}
双向链表的尾插:
DOUBLELIST *tail_insert(DOUBLELIST *header, DOUBLELIST *new)
{
DOUBLELIST *p = header;
if(NULL != p->next)
{
p = p->next;
}
p->next = new;
new->prev = p;
}
双向链表的头插:
DOUBLELIST *headinsert(DOUBLELIST *h