链表【模板】

· · 算法·理论

struct Node{
    int value;
    Node *pre,*next;
};
Node *head,*tail,*q,*m[1000010];
void init(){
    head=new Node();
    tail=new Node();
    head->next=tail;
    tail->pre=head;
}
void insert(Node *p,int val){
    q=new Node();
    q->value=val;
    p->next->pre=q;
    q->next=p->next;
    p->next=q;
    q->pre=p;
    m[val]=q;
}
void remove(Node *p){
    p->next->pre=p->pre;
    p->pre->next=p->next;
    delete p;
}
void print(){
    Node *st=head->next;
    while(st!=tail){
        st=st->next;
        cout<<st->pre->value<<' ';
    }
    cout<<'\n';
}