• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            心如止水
            Je n'ai pas le temps
            posts - 400,comments - 130,trackbacks - 0
            最近對樹型數據結構特別感興趣!
            以下是我的Splay樹代碼:
            #include<stdio.h>
            #define maxn 10007
            typedef 
            struct
            {
                
            long data,fa,ls,rs;
            }Node;
            Node splay[maxn];
            long m,root;
            long n;
            void Zig(long node)
            {
                
            long t=splay[node].fa;
                splay[t].rs
            =splay[node].ls;
                
            if(splay[node].ls)
                  splay[splay[node].ls].fa
            =t;
                splay[node].fa
            =splay[t].fa;
                splay[node].ls
            =t;
                
            if(splay[t].fa)
                {
                   
            if(t==splay[splay[t].fa].ls) splay[splay[t].fa].ls=node;
                   
            else splay[splay[t].fa].rs=node;
                }
                splay[t].fa
            =node;
            }
            void Zag(long node)
            {
                
            long t=splay[node].fa;
                splay[t].ls
            =splay[node].rs;
                
            if(splay[node].rs)
                  splay[splay[node].rs].fa
            =t;
                splay[node].fa
            =splay[t].fa;
                splay[node].rs
            =t;
                
            if(splay[t].fa)
                {
                   
            if(t==splay[splay[t].fa].ls) splay[splay[t].fa].ls=node;
                   
            else splay[splay[t].fa].rs=node;
                }
                splay[t].fa
            =node;
            }
            void Splay(long node)
            {
                
            long t;
                
            while(splay[node].fa)
                {
                   t
            =splay[node].fa;
                   
            if(splay[t].fa==0)
                   {
                      
            if(node==splay[t].ls) Zag(node);
                      
            else Zig(node);
                      
            break;
                   }
                   
            if(t==splay[splay[t].fa].ls)
                   {
                      
            if(node==splay[t].ls)
                      {Zag(t);Zag(node);}
                      
            else {Zig(node);Zag(node);}
                   }
                   
            else
                   {
                      
            if(node==splay[t].ls)
                      {Zag(node);Zig(node);}
                      
            else {Zig(t);Zig(node);}
                   }
                }
                root
            =node;
            }
            void Insert(long x)
            {
                
            long p,q;
                m
            ++;
                splay[m].data
            =x;
                splay[m].fa
            =splay[m].ls=splay[m].rs=0;
                
            if(root==0)
                {
                   root
            =m;return;
                }
                
            for(p=root;p; )
                {
                   q
            =p;
                   
            if(x<=splay[p].data) p=splay[p].ls;
                   
            else p=splay[p].rs;
                }
                splay[m].fa
            =q;
                
            if(x<=splay[q].data) splay[q].ls=m;
                
            else splay[q].rs=m;
                Splay(m);
            }
            int main()
            {
                freopen(
            "data.in","r",stdin);
                freopen(
            "data.out","w",stdout);
                scanf(
            "%ld",&n);
                m
            =root=0;
                
            for(long i=1;i<=n;i++)
                  splay[i].data
            =splay[i].fa=splay[i].ls=splay[i].rs=0;
                
            for(long i=1;i<=n;i++)
                {
                   
            long t;
                   scanf(
            "%ld",&t);
                   Insert(t);
                }
                Splay(
            1);
                
            for(long i=1;i<=n;i++)
                printf(
            "No.%ld data.%ld fa.%ld ls.%ld rs.%ld\n",i,splay[i].data,splay[i].fa,splay[i].ls,splay[i].rs);
            return 0;
            }

            posted on 2010-03-12 22:28 lee1r 閱讀(986) 評論(0)  編輯 收藏 引用 所屬分類: 算法與數據結構
            日本加勒比久久精品| 日韩欧美亚洲综合久久影院Ds| 国内精品久久久久影院老司| 亚洲国产精品一区二区三区久久| 一本综合久久国产二区| 伊人久久大香线蕉综合Av| 97精品国产97久久久久久免费| 久久久精品人妻一区二区三区蜜桃 | 青青热久久国产久精品 | 久久成人国产精品| 久久亚洲精品中文字幕三区| 亚洲?V乱码久久精品蜜桃| 人妻久久久一区二区三区| 99久久精品免费看国产一区二区三区| 中文字幕精品久久久久人妻| 久久精品免费观看| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 欧美伊人久久大香线蕉综合69 | 一本一道久久a久久精品综合| 久久综合综合久久综合| 99精品伊人久久久大香线蕉| 中文字幕无码久久精品青草| 99久久99久久| 久久人人爽人人爽人人片AV东京热| 久久精品国产精品亚洲毛片| 伊人久久大香线蕉综合热线| 欧美激情精品久久久久| 久久人人妻人人爽人人爽| 日韩久久久久中文字幕人妻 | 精品多毛少妇人妻AV免费久久 | 狠狠色丁香久久婷婷综合蜜芽五月 | 精品无码久久久久国产| 久久综合亚洲鲁鲁五月天| 久久精品国产亚洲av瑜伽| 久久精品国产亚洲av影院| 精品久久久中文字幕人妻 | 无码精品久久久久久人妻中字| 午夜视频久久久久一区| 久久人人爽人人爽AV片| 久久精品无码一区二区三区| 蜜臀久久99精品久久久久久小说|