写法一
struct Node{
int value;
int prev,next;
}node[size];
int head,tail,tot;
int init(){
tot=2;
head=1,tail=2;
node[head].next=tail;
node[tail].prev=head;
}
void insert(int p,int val){
q=++tot;
node[q].value=val;
node[node[p].next].prev=q;
node[q].next=node[p].next;
node[p].next=q;
node[q].prev=p;
}
void remove(int p){
node[node[p].prev].next=node[p].next;
node[node[p].next].prev=node[p].prev;
}
void clear(){
memset(node,0,sizeof(node));
head=tail=tot=0;
}
写法二
struct node{
int value;
node *prev,*next;
};
node *head,*tail;
void init(){
head=new node();
tail=new node();
head->next=tail;
tail->prev=head;
}
void insert(node *p,int val){
q=new node();
q->value=val;
p->next->prev=q;
q->next=p->next;
q->prev=p;
p->next=q;
}
void remove(node *p){
p->prev->next=p->next;
p->next->prev=p->prev;
delete p;
}
void recycle(){
while(head!=tail){
head=head->next;
delete head->prev;
}
}