µ±Ç°Î»ÖãºÊ×Ò³ > Êý¾Ý½á¹¹ µÚ°ËÕ ²éÕÒ±í
//ÔÚÉ¢ÁбíHSÖУ¬É¾³ý¹Ø¼ü×ÖK£¬KµÄÉ¢ÁеØÖ·ÊÇi£¬Òò½â¾ö³åÍ»¶ø½«ÆäÎïÀíµØÖÃÓÚ±íÖÐj¡£Ëã·¨²éÕҹؼü×ÖKµÄͬÒå´Ê£¬½«Æä×îºóÒ»¸öͬÒå´ÊÒÆµ½Î»ÖÃj£¬²¢½«ÆäͬÒå´ÊµÄλÖÃÖÿա£
{di=1£»last=j£»x=(j+di)% m£»// ̽²âµØÖ·ÐòÁУ¬last¼ÇKµÄ×îºóÒ»¸öͬÒå´ÊµÄλÖà while£¨x!=i£© //¿ÉÄÜҪ̽²âһȦ
{if£¨HS[x]==null£©break£» // ̽²âµ½¿ÕλÖ㬽áÊøÌ½²â else if£¨HS[x]%P==i£©last=x£»// ¹Ø¼ü×ÖKµÄͬÒå´Ê di=di+1£»x=(j+di) % m£» // È¡ÏÂÒ»µØÖ·Ì½²â }
HS[j]=HS[last]; HS[last]=null; //½«¹þÏ£µØÖ·lastµÄ¹Ø¼ü×ÖÒÆµ½¹þÏ£µØÖ·j
}
[Ëã·¨ÌÖÂÛ] ÓÉÓÚÓÃÏßÐÔ̽²â½â¾ö³åÍ»£¬¿ÉÄÜ·¢Éú¡°¶þ´Î¾Û¼¯¡±£¨Á½¸öµÚÒ»¹þÏ£µØÖ·²»Í¬µÄ¼Ç¼Õù¶áͬһºó¼Ì¹þÏ£µØÖ·£©¡£ÏóÉÏÃæÕâÑù´¦Àíºó£¬¶ÔÓÚ¹þÏ£µØÖ·ÎªiµÄ¼Ç¼ûÓÐÎÊÌâÁË£¬µ«ÓÉÓÚ½«µØÖ·jÖÿգ¬ÓпÉÄܽضÏÁËÆäËü¼Ç¼µÄ̽²âͨ·¡£×îÃ÷ÏÔµÄÊǹþÏ£µØÖ·ÎªjµÄ¼Ç¼¾Í²é²»µ½ÁË¡£½â¾öµÄ°ì·¨ÊǼÌÐøµ÷Õû£¬Ö±µ½µ±Ç°¹þÏ£±íÖеÄÿ¸ö¼Ç¼µÄ²éÕÒ¶¼ÊÇÕýÈ·µÄΪֹ¡£
14£®[ÌâÄ¿·ÖÎö]ÀûÓöþ²æÅÅÐòÊ÷µÄÐÔÖÊ£¬´Ó¸ù½áµã¿ªÊ¼²éÕÒ£¬Èô¸ù½áµãµÄֵСÓÚµÈÓÚx£¬Ôò¸ù½áµã¼°Æä×ó×ÓÊ÷¾ùӦɾ³ý£¬È»ºóÒÔÓÒ×ÓÊ÷µÄ¸ù½áµãΪÊ÷¸ù£¬ÖØÐ¿ªÊ¼²éÕÒ¡£Èô¸ù½áµãµÄÖµ´óÓÚx£¬Ôò˳×ó×ÓÊ÷ÏòϲéÕÒ£¬Ö±µ½Ä³½áµãµÄֵСÓÚµÈÓÚx£¬Ôò¸Ã½áµã¼°Æä×ó×ÓÊ÷¾ùӦɾ³ý¡£ÏÂÃæÉè¼ÆÒ»²éÕÒËã·¨£¬È·¶¨±»É¾³ý×ÓÊ÷µÄ¸ù½áµã£¬ÔÙÉè¼ÆÒ»É¾³ýËã·¨£¬É¾³ýÒÔ±»É¾½áµãΪ¸ùµÄ×ÓÊ÷¡£
typedef struct node
{int data£» struct node *left£¬*right; }BiTNode£¬*BSTree£» void DelTree(BSTree r£© //·ÇµÝ¹éɾ³ýÒÔrΪ¸ùµÄ¶þ²æÅÅÐòÊ÷
{BSTree S[]£»// Õ»£¬ÈÝÁ¿×ã¹»´ó£¬Õ»ÖÐÔªËØÊǶþ²æÅÅÐòÊ÷½áµãµÄÖ¸Õë top=0£»
while £¨r!=null || top>0£© {while£¨r!=null£© // ÑØ×ó·ÖÖ¦ÏòÏÂ
{S[++top]=r£»r=r->left £»}
if£¨top>0£© // ÍËÕ»£¬ÑØÕ»¶¥½áµãµÄÓÒ×ÓÊ÷ÏòÏÂɾ³ý£¬Êͷű»É¾³ý½áµã¿Õ¼ä {p=S[top--]£»r=p->right£»free£¨p£©£»} }
}// DelTree
void DeleteAllx(BSTree £Ô£¬int x£©
//ÔÚ¶þ²æÅÅÐòÊ÷£ÔÖУ¬É¾³ýËùÓÐСÓÚµÈÓÚxµÄ½áµã {BSTree p=T£¬q£»
while£¨T && T->data¡Üx£© //¸ù½áµãµÄֵСÓÚµÈÓÚx {p=T£»T=T->right£»p->right=null£»
DelTree£¨p£©£»} //ɾ³ý¶þ²æÊ÷p,ɾ³ý³ÖÐøµ½¡°¸ù¡±½áµãÖµ´óÓÚx»òTΪ¿ÕÊ÷Ϊֹ if (T)
{q=T£»p=T->left£»
while£¨p && p->data>x£© //ÑØ¸ù½áµã×ó·ÖÖ¦ÏòÏ£¬²éСÓÚµÈÓÚxµÄ½áµã {while£¨p && p->data>x£© { q=p£»p=p->left£»} // q¼ÇpµÄË«Ç× if£¨p£© //p½áµãµÄֵСÓÚµÈÓÚx
{q->left=p->right£»p->right=null£»DelTree£¨p£©£» } p=q->left£»// ÔÙ²éÔpµÄÓÒ×ÓÊ÷ÖÐСÓÚµÈÓÚxµÄ½áµã }} }// DeleteAllx 15£®typedef struct node {datatype data£» int count£»
struct node * llink£¬*rlink£» }BiTNode£¬*BSTree£»
void Search_InsertX(BSTree t£¬datatype X£©
//ÔÚ¶þ²æÅÅÐòÊ÷tÖвéÕÒֵΪXµÄ½áµã£¬Èô²éµ½£¬ÔòÆä½áµãµÄcountÓòÖµÔö1£¬·ñÔò£¬
//½«Æä²åÈëµ½¶þ²æÅÅÐòÊ÷ÖС£
{p=t£»
while£¨p!=null && p->data!=X£© //²éÕÒֵΪXµÄ½áµã£¬fÖ¸Ïòµ±Ç°½áµãµÄË«Ç×
{f=p£»
if£¨p->data
{p=£¨BiTNode *£©malloc(sizeof £¨BiTNode£©£©£» p->data=X£»p->llink=null£»p->rlink=null£»
if£¨f->data>X£©f->llink=p£»else f->rlink=p£» }
else p->count++£»// ²éѯ³É¹¦£¬ÖµÓòΪXµÄ½áµãµÄcountÔö1¡£ }// Search_InsertX
16£®[ÌâÄ¿·ÖÎö] ÒòΪ¶þ²æÊ÷¸÷½áµãÒѱêÃ÷ÁËÆ½ºâÒò×Ób£¬¹Ê´Ó¸ù½áµã¿ªÊ¼¼ÇÊ÷µÄ²ã´Î¡£¸ù½áµãµÄ²ã´ÎΪ1£¬Ã¿ÏÂÒ»²ã£¬²ã´Î¼Ó1£¬Ö±µ½²ãÊý×î´óµÄÒ¶×Ó½áµã£¬Õâ¾ÍÊÇÆ½ºâ¶þ²æÊ÷µÄ¸ß¶È¡£µ±½áµãµÄƽºâÒò×ÓbΪ0ʱ£¬ÈÎÑ¡×óÓÒÒ»·ÖÖ¦ÏòϲéÕÒ£¬Èôb²»Îª0£¬ÔòÑØ×󣨵±b=1ʱ£©»òÓÒ£¨µ±b=-1ʱ£©ÏòϲéÕÒ¡£ int Height£¨BSTree t£© // ÇóÆ½ºâ¶þ²æÊ÷tµÄ¸ß¶È {level=0£»p=t£» while£¨p£©
{level++£» // Ê÷µÄ¸ß¶ÈÔö1
if£¨p->bf<0£©p=p->rchild£»//bf=-1 ÑØÓÒ·ÖÖ¦ÏòÏÂ
//bfÊÇÆ½ºâÒò×Ó£¬ÊǶþ²æÊ÷t½áµãµÄÒ»¸öÓò£¬Òòƪ·ùËùÏÞ£¬Ã»ÓÐд³öÆä´æ
´¢¶¨Òå
else p=p->lchild£» //bf>=0 ÑØ×ó·ÖÖ¦ÏòÏÂ
}//while
return £¨level£©£»//ƽºâ¶þ²æÊ÷µÄ¸ß¶È
} //Ëã·¨½áÊø
17£®[ÌâÄ¿·ÖÎö]¶þ²æÅÅÐòÊ÷µÄ½¨Á¢ÎÊÌâÇë²Î¼ûÉÏÃæÌâ3£¨1£©¡£½«¶þ²æÅÅÐòÊ÷Éϵĸ÷ÕûÊý°´½µÐòдÈë´ÅÅ̵ÄÎÊÌ⣬Ҫ¶Ô¶þ²æÅÅÐòÊ÷½øÐС°ÖÐÐò±éÀú¡±¡£ÕâÀïµÄ¡°ÖÐÐò±éÀú¡±Òª²ÉÈ¡¡°ÓÒ¸ù×󡱡£Îª·½±ãÆð¼û£¬ÏȽ«ÕûÊýдÈëһȫ¾Ö±äÁ¿Êý×éÖУ¬ÔÙдÈë´ÅÅÌÎļþÖС£
int i=0,a[n];//³¤¶ÈΪnµÄÕûÐÍÊý×é void InOrder(BSTree t)
//ÏÈÓÒºó×óµÄÖÐÐò±éÀú¶þ²æÅÅÐòÊ÷t£¬¼Ù¶¨¸ÃÊ÷tÒÑÔÚ±¾Ì⣨1£©ÖÐÉú³É {if (t)
{ InOrder(t->rchild) a[i++]=t->key; InOrder(t->lchild) } }//InOrder void SaveToDisk()
//½«¶þ²æÅÅÐòÊ÷Éϵĸ÷ÕûÊý°´½µÐòдÈë´ÅÅÌ {FILE *fp;
if ((fp=fopen(¡°file1.dat¡±, ¡°wb¡±))==null) {printf(¡°file can not open!\\n¡±);exit(0); }
fwrite(a,sizeof (int),n,fp);//½«Êý×éaÖеÄn¸öÕûÊýдÈë´ÅÅÌ fclose(fp);//¹Ø±ÕÎļþ }//SaveToDisk 18£®£¨1£©µÝ¹éËã·¨
void DecPrint(BSTree t£©
//µÝ¼õÐòÊä³ö¶þ²æÅÅÐòÊ÷tÖÐËùÓÐ×ó×ÓÊ÷Ϊ¿ÕÓÒ×ÓÊ÷·Ç¿ÕµÄ½áµãÊý¾ÝÓòµÄÖµ¡£ {if£¨t£©
{DecPrint(t->rchild)£»
if£¨!t->lchild && t->rchild£©printf(t->data£º4£© DecPrint(t->lchild£©£» } }//DecPrint £¨2£©·ÇµÝ¹éËã·¨
void DecPrint(BSTree t£©
// µÝ¼õÐòÊä³ö¶þ²æÅÅÐòÊ÷tÖÐËùÓÐ×ó×ÓŮΪ¿ÕÓÒ×ÓÅ®·Ç¿ÕµÄ½áµãµÄÖµ {BSTree S[]£»//SÊǶþ²æÅÅÐòÊ÷½áµãÖ¸ÕëµÄÕ»£¬ÈÝÁ¿×ã¹»´ó int top=0£» while£¨t || top>0£©
¹²·ÖÏí92ƪÏà¹ØÎĵµ