码迷,mamicode.com
首页 > 其他好文 > 详细

Splay指针模板

时间:2017-07-19 22:05:04      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:pop   using   new   lin   nod   ==   class   log   amp   

#include<cstdio>
#include<queue>
#include<cstdlib>
#define il inline
struct node
{
    int v;
    node* fa,ch[2];
}s[100045],*pos,*rt;
il void newnode(node* &r,int v,node* fa)
{
    if(mem.empty())
    r=pos++;
    else
    r=mem.front(),mem.pop();
    r->v=v;
    r->fa=fa;
    r->ch[0]=r->ch[1]=0;
}
il void roll(node* &r,boot t)
{
    node* y=r->fa;
    if(y->fa)
    y->fa->ch[y->fa->ch[1]==y]=x;
    fa[x]=y->fa;
    if(x->ch[t])
    x->ch[t]->fa=y;
    y->ch[!t]=x->ch[t];
    x->ch[p]=y;
    y->fa=x;
}
il void splay(node* r,node* g)//将r旋转到g下面 
{
    while(r->fa!=g) 
    {
        if(r->fa->fa==g)//如果r的爸爸的爸爸就是目标 
        roll(r,r->fa->ch[0]==x->fa);//转一下就可以了 
        else
        {//自行理解,很简单 
            node* y=x->fa;
            bool t=y->fa->ch[0]==y;
            if(y->ch[0]==x) 
            roll(y,t);
            else
            roll(x,!t);
            roll(x,t);
        }
    }
    if(!g)//目标没了,r当大爷 
    rt=r;
}

using namespace std;
int main()
{
    
}

 

Splay指针模板

标签:pop   using   new   lin   nod   ==   class   log   amp   

原文地址:http://www.cnblogs.com/gshdyjz/p/7207678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!