亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? b_tree.cpp

?? C++描述的數(shù)據(jù)結(jié)構(gòu)內(nèi)容,在C++builder的環(huán)境中運(yùn)行,這是第二部分
?? CPP
字號(hào):
//B-樹的操作B_Tree.cpp
#include<iostream.h>
#include<iomanip.h>

typedef int KeyType;
typedef int RecType;

#define m 5//定義B-樹的階樹
//B-樹的結(jié)點(diǎn)類型定義
typedef struct BTnode
{ int keynum;  //結(jié)點(diǎn)中關(guān)鍵字個(gè)數(shù)
  struct BTnode *parent;//指向雙親結(jié)點(diǎn)的指針
  KeyType key[m+1];//組關(guān)鍵字向量
  struct BTnode *ptr[m+1];//子樹指針向量
  RecType *recptr[m+1];//記錄指針向量
}BTreeNode;
typedef BTreeNode *BTree;

//B-樹的查找算法
int BTSearch(BTree T,KeyType k,BTree *p);
//將關(guān)鍵碼k插入到B-樹T中,并返回樹根
BTree Insert(BTree T,KeyType k);
//結(jié)點(diǎn)*p中包含m個(gè)關(guān)鍵字,從中分裂出一個(gè)新結(jié)點(diǎn),并返回新結(jié)點(diǎn)指針
BTree split(BTree p);
//在B-樹T中刪除關(guān)鍵字的操作,情況(2)
int MoveKey(BTree p);
//在B-樹T中刪除關(guān)鍵字的操作,情況(3)
BTree merge(BTree p);
//在B-樹T中刪除關(guān)鍵字k,并返回樹根.
BTree Delete(BTree T,KeyType k);

//B-樹的查找算法
int BTSearch(BTree T,KeyType k,BTree *p)
{BTree q;
 int i;
 *p=q=T;
 while(q!=NULL)
 {*p=q;
  q->key[0]=k;   //設(shè)置哨兵
  for(i=q->keynum;k<q->key[i];i--)//在*q中查找k
   if(i>0&&q->key[i]==k) return i;//查找成功,返回i和p
  q=q->ptr[i];//沿q的第i個(gè)子樹繼續(xù)搜索
 }
 return 0;
}
//將關(guān)鍵碼k插入到B-樹T中,并返回樹根
BTree Insert(BTree T,KeyType k){
 BTree p,s1=NULL,s2=NULL;
 int i;
 if(BTSearch(T,k,&p))       //在樹中搜索k,若找到
  {cout<<setw(3)<<T->key[k];
   return T;               //直接返回,不進(jìn)行插入
  }
 while(p!=NULL){
   p->key[0]=k;            //設(shè)置哨兵
   for(i=p->keynum;k<p->key[i];i--)
    {p->key[i+1]=p->key[i];
     p->ptr[i+1]=p->ptr[i];}
   p->key[i]=k;     //插入關(guān)鍵碼k
   cout<<setw(2)<<p->key[i];
   p->ptr[i-1]=s1;  //置關(guān)鍵碼k的左邊孩子指針
   p->ptr[i]=s2;    //置關(guān)鍵碼k的右邊孩子指針
   if(++(p->keynum)<m)
     break;//若插入后關(guān)鍵碼個(gè)數(shù)小于m,則完成插入
   else {
    s2=split(p);//分裂*p,將分裂的新結(jié)點(diǎn)作為右邊孩子
    s1=p;       //將分裂后的*p作為左邊孩子
    k=p->key[p->keynum+1];//取出要插入到父結(jié)點(diǎn)的關(guān)鍵碼
    p=p->parent;
   }
  }
  if(p==NULL) //需要產(chǎn)生新的根結(jié)點(diǎn)
  {p=new BTreeNode;//申請(qǐng)新結(jié)點(diǎn)
   p->keynum=1;p->key[1]=k;
   p->ptr[0]=s1;p->ptr[1]=s2;
   return p;}
  else return T;
}
//在B-樹T中刪除關(guān)鍵字的操作,情況(2)
int MoveKey(BTree p)
{BTree b,f=p->parent;     //f指向*p的父結(jié)點(diǎn)
 int i,j;
 for(i=0;f->ptr[i]!=p;i++); //在*f中找出指向*p的指針位置
 if(i>0)                    //若*p有左鄰兄弟
  {b=f->ptr[i-1];           //b指向*p的左鄰兄弟
   if(b->keynum>(m-1)/2)    //左鄰兄弟有多余的關(guān)鍵字
    {for(j=p->keynum;j>=0;j--)//將*P中的關(guān)鍵字和指針后移
      {p->key[j+1]=p->key[j];
       p->ptr[j+1]=p->ptr[j];
      }
     p->key[1]=f->key[i];   //將*f中關(guān)鍵字下移到*p中
     f->key[i]=b->key[b->keynum];//將*b中的最大關(guān)鍵字上移到*f中
     p->ptr[0]=b->ptr[b->keynum];//將*b中的最右邊子樹移到*f的最左邊
     p->keynum++;b->keynum--;    //修改*p和*b中的關(guān)鍵字?jǐn)?shù)目
     return 1;                  //完成關(guān)鍵字移動(dòng),返回
    }
    if(i<f->keynum)             //若*p有右鄰兄弟
    {b=f->ptr[i+1];             //b指向*p的右鄰兄弟
     if(b->keynum>(m-1)/2)       //右鄰兄弟有多余的關(guān)鍵字
      {p->key[p->keynum]=f->key[i+1];//將*f中的關(guān)鍵字下移到*p中
       f->key[i+1]=b->key[1];     //將*b中的最小關(guān)鍵字上移到*f中
       p->ptr[p->keynum]=b->ptr[0];//將*b中的最左邊子樹移到*f的最右邊
       for(j=0;j<b->keynum;j++) //將*b中的關(guān)鍵字和指針前移
       {b->key[j]=b->key[j+1];
        b->ptr[j]=b->ptr[j+1];
       }
       p->keynum++;b->keynum--; //修改*p和*b中的關(guān)鍵字?jǐn)?shù)目
       return 1;               //完成關(guān)鍵字移動(dòng),返回
      }
    }}
  return 0;
}
//結(jié)點(diǎn)*p中包含m個(gè)關(guān)鍵字,從中分裂出一個(gè)新結(jié)點(diǎn),并返回新結(jié)點(diǎn)指針
BTree split(BTree p)
{BTree new1;
 int i,mid,j;
 new1=new BTreeNode;
 mid=(m+1)/2;
 new1->ptr[0]=p->ptr[mid];
 j=1;
 for(i=mid+1;i<=m;i++)
  {new1->key[j]==p->key[i];
   new1->ptr[j++]=p->ptr[i];
  }
 new1->keynum=m-mid;
 p->keynum=mid-1;
 return(new1);
}
//在B-樹T中刪除關(guān)鍵字的操作,情況(3)
BTree merge(BTree p)
{BTree b,f=p->parent;      //f指向*p的父結(jié)點(diǎn)
 int i,j;
 for(i=0;f->ptr[i]!=p;i++) ;//在*f中找出指向*p的指針位置
 if(i>0)                     //若*p有左鄰兄弟
  b=f->ptr[i-1];             //b指向*p的左鄰兄弟
 else {
  b=p;
  p=f->ptr[i+1];
 }           //p指向*p的右鄰兄弟
 b->key[++b->keynum]=f->key[i];//將*f中第i個(gè)關(guān)鍵字合并到*b中
 b->ptr[p->keynum]=p->ptr[0]; //將*p中的最左邊子樹移到*b的最右邊
 for(j=1;j<=b->keynum;j++)    //將*p中的關(guān)鍵字和指針移到*b中
 {b->key[++b->keynum]=p->key[j];
  b->ptr[b->keynum]=p->ptr[j];
 }
 free(p);
 for(j=i+1;j<f->keynum;j++)//將*f中第i個(gè)之后的關(guān)鍵字和指針前移
 {f->key[j-1]=f->key[j];
  f->ptr[j-1]=f->ptr[j];
 }
 f->keynum--;
 return b;
}
//在B-樹T中刪除關(guān)鍵字k,并返回樹根.
BTree Delete(BTree T,KeyType k)
{BTree p,s;
 int i,j;
 i=BTSearch(T,k,&p);    //在樹中搜索k
 if(i==0) return T;     //在B_樹中找不到k,直接返回
 if(p->ptr[i-1])        //當(dāng)p不是葉結(jié)點(diǎn)時(shí)
 {s=p->ptr[i-1];        //取關(guān)鍵字k的左鄰子樹
  while(s->ptr[s->keynum])//在子樹中找包含最大關(guān)鍵字的結(jié)點(diǎn)
   s=s->ptr[s->keynum];
  p->key[i]=s->key[s->keynum];//用子樹中最大關(guān)鍵字取代k
  p=s;i=s->keynum;
 }
 for(j=i+1;j<=p->keynum;j++)//從*p刪除第i個(gè)關(guān)鍵字
  p->key[j-1]=p->key[j];
 p->keynum--;
 while(p->keynum<(m-1)/2&&p->parent)//若*p的關(guān)鍵字?jǐn)?shù)目不夠
 {if(!MoveKey(p)) //按第(2)種情況處理,若不成功
   p=merge(p);    //合并結(jié)點(diǎn)
  p=p->parent;    //檢查父結(jié)點(diǎn)
 }
 if(p==T&&T->keynum==0)//若根結(jié)點(diǎn)中無關(guān)鍵字
 {T=T->ptr[0];//樹根下移一層
  free(p);    //釋放原來根結(jié)點(diǎn)
 }
 return T;
}
//B-樹的相關(guān)操作的測(cè)試
void main()
{cout<<"B_Tree.cpp運(yùn)行結(jié)果:\n";
 KeyType k=10;
 BTree t=new BTreeNode;
 t->keynum=1;t->parent=NULL;
 t->key[1]=1;t->ptr[1]=NULL;
 t->recptr[1]=NULL;
 cout<<"輸出插入關(guān)鍵字:\n";
 for(int i=1;i<k;i++)
  Insert(t,i);
 cout<<endl; 
 for(int i=2;i<k;i+=2)
  if(Delete(t,i)) cout<<"第"<<i<<"個(gè)關(guān)鍵字刪除成功!\n";
 cin.get();
}



?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美无乱码久久久免费午夜一区| 亚洲国产aⅴ天堂久久| 精品一区二区三区在线观看| 欧美日韩高清在线| 天天亚洲美女在线视频| 欧美电影免费观看高清完整版在线观看| 亚洲成人福利片| 日韩欧美一级二级三级| 国产一区在线看| 国产精品久久免费看| 91看片淫黄大片一级| 亚洲mv大片欧洲mv大片精品| 91精品麻豆日日躁夜夜躁| 色综合久久久久| 亚洲欧美国产77777| 欧美日本在线观看| 精品一区二区在线观看| 亚洲欧美在线高清| 欧美人体做爰大胆视频| 韩国精品主播一区二区在线观看| 国产女同性恋一区二区| 在线亚洲精品福利网址导航| 免费人成精品欧美精品| 国产精品嫩草影院com| 欧美在线观看一区| 国内精品免费**视频| 成人欧美一区二区三区在线播放| 在线日韩国产精品| 国产一区二区在线视频| 亚洲自拍都市欧美小说| 精品99一区二区三区| 在线观看三级视频欧美| 久久成人麻豆午夜电影| 亚洲精品欧美激情| 久久新电视剧免费观看| 在线看日韩精品电影| 国产伦精一区二区三区| 亚洲国产日韩综合久久精品| 久久精品一区二区三区不卡牛牛| 在线免费观看不卡av| 豆国产96在线|亚洲| 日韩主播视频在线| 1024成人网色www| 精品国产乱码久久久久久影片| 97超碰欧美中文字幕| 久久99热国产| 亚洲国产综合色| 中文字幕中文字幕一区二区 | 亚洲一区二区三区四区中文字幕| 日韩美女主播在线视频一区二区三区| 94-欧美-setu| 国产成人av电影在线观看| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲成人1区2区| 国产精品色在线| 久久综合九色综合欧美98| 欧美午夜电影一区| 色诱亚洲精品久久久久久| 成人性视频网站| 国产一区二区成人久久免费影院| 亚洲成av人片观看| 一区二区三区.www| 亚洲码国产岛国毛片在线| 国产日产欧美一区| 久久精品一区二区三区不卡 | 在线视频一区二区三| youjizz久久| 国产成人免费在线| 国产精品原创巨作av| 久久精品国产精品亚洲红杏| 日本免费在线视频不卡一不卡二| 亚洲国产成人av| 亚洲第一成年网| 亚洲成人综合在线| 亚洲123区在线观看| 亚洲成人一区二区| 天天操天天色综合| 热久久久久久久| 六月丁香综合在线视频| 精品一区二区免费| 国产精品一级片| 粉嫩高潮美女一区二区三区 | 99精品视频一区| 99这里只有精品| 91丨九色丨国产丨porny| 色呦呦国产精品| 欧美日韩亚洲综合| 日韩欧美一区二区不卡| 精品国产免费人成在线观看| 久久众筹精品私拍模特| 爽爽淫人综合网网站| 日本特黄久久久高潮| 极品少妇一区二区三区精品视频| 国产精品影视网| 99久久久精品免费观看国产蜜| 色综合久久久久久久久| 欧美日韩一区不卡| 精品国精品国产| 国产精品欧美一区喷水| 亚洲一区二区三区影院| 老色鬼精品视频在线观看播放| 韩国在线一区二区| 91尤物视频在线观看| 欧美日韩一区二区在线观看| 精品久久免费看| 国产精品女同互慰在线看| 亚洲午夜成aⅴ人片| 国内精品视频666| 91视频精品在这里| 在线不卡a资源高清| 久久嫩草精品久久久久| 亚洲精品中文在线| 久久99这里只有精品| 99re成人精品视频| 在线不卡中文字幕| 国产精品毛片久久久久久久| 一区二区三国产精华液| 韩国v欧美v日本v亚洲v| 色视频成人在线观看免| 欧美va日韩va| 一区二区三区加勒比av| 国产伦精品一区二区三区视频青涩| 色哟哟国产精品| 久久婷婷国产综合国色天香| 樱花影视一区二区| 国产精品一区二区不卡| 欧美午夜精品久久久久久超碰| 国产亚洲视频系列| 日韩国产精品久久久久久亚洲| 丰满少妇在线播放bd日韩电影| 91精品国产一区二区三区香蕉| 国产精品久久99| 国产一区二区三区在线观看精品| 欧美三级日韩在线| 中文字幕在线一区免费| 久久国产精品99精品国产| 欧美午夜精品电影| 男女视频一区二区| 欧洲亚洲精品在线| 国产精品护士白丝一区av| 久久99久久99| 欧美丰满嫩嫩电影| 亚洲女同女同女同女同女同69| 韩国女主播成人在线| 51精品国自产在线| 香蕉乱码成人久久天堂爱免费| www.久久久久久久久| 国产亚洲女人久久久久毛片| 麻豆精品一区二区综合av| 欧美色中文字幕| 亚洲精品成人悠悠色影视| 成人免费观看视频| 久久久99精品久久| 久久国产精品第一页| 91精品国产91久久综合桃花| 亚洲图片欧美一区| 欧美亚洲一区三区| 亚洲精品一二三区| 色综合视频一区二区三区高清| 国产精品毛片久久久久久久| 国产成人免费9x9x人网站视频| 欧美精品一区二区久久久| 精品亚洲porn| 精品国产一区二区三区不卡| 久久se精品一区精品二区| 日韩精品中文字幕在线一区| 美女视频网站久久| 精品三级在线看| 国产在线麻豆精品观看| 久久免费偷拍视频| 成人午夜激情影院| 中文字幕av在线一区二区三区| 成人av小说网| 亚洲色图欧美激情| 欧美手机在线视频| 五月激情综合色| 欧美一区2区视频在线观看| 奇米777欧美一区二区| 欧美一区二区三区免费观看视频| 老鸭窝一区二区久久精品| 精品国产91亚洲一区二区三区婷婷| 国产在线精品免费av| 欧美国产亚洲另类动漫| 91欧美一区二区| 亚洲一区二区视频| 日韩亚洲欧美成人一区| 韩国女主播成人在线| 国产精品视频一二三区| 色哟哟亚洲精品| 青娱乐精品视频在线| 2020国产精品自拍| 99热99精品| 亚洲二区视频在线| 精品国产sm最大网站免费看| 成人激情电影免费在线观看| 国产传媒久久文化传媒| 亚洲免费高清视频在线| 日韩欧美一二三| 成人av在线资源| 三级不卡在线观看|