初步写了一个,供参考:
struct LINK
{
DATA data;
LINK *prev;
LINK *next;
};
LINK *head = NULL;
void create(int n)
{
LINK *p = NULL, *q = NULL;
for(int i=0; i
p = new LINK;
if(q)
{
q->next = p;
p->prev = q;
}
if(head == NULL)
{
head = p;
}
}
head->prev = p;
p->next = head;
}
void insert(int i, LINK *node)
{
LINK *p = head;
LINK *q;
for(int j = 0; j < i; j++)
{
p = p->next;
}
q = p->next;
p->next = node;
node->prev = p;
node->next = q;
q->prev = node;
}
void del(int i)
{
LINK *p = head;
LINK *q, *t;
for(int j = 0; j < i; j++)
{
p = p->next;
}
q = p->prev;
t = p->next;
delete p;
q->next = t;
t->prev = q;
}
void push_front(LINK *node)
{
LINK *t = head->prev;
node->next = head;
node->prev = t;
head->prev = node;
t->next = node;
head = node;
}
void push_back(LINK *node)
{
LINK *t = head->prev;
node->prev = t;
node->next = head;
t->next = node;
head->prev = node;
}