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

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

?? avlnode.h

?? 這是一個銀行賬戶的管理程序
?? H
字號:
//this is avl tree node 
#include "Item.h"

class avlNode//平衡二叉樹結(jié)點類
{
	public:
		avlNode(Index val);//構(gòu)造函數(shù)
		void release();//析構(gòu)用函數(shù)								
		int add(avlNode* &p,Index val);//插入一個值;返回新的avl樹的根結(jié)點的指針
		void preorderview(avlNode *current,int i=-1);//前序周游
		avlNode* remove(Index val,avlNode* &waste,int &flag);//刪除以當(dāng)前結(jié)點的為根的avl樹中的val結(jié)點
		avlNode* findNodeValue(Index val);//查找val結(jié)點
		Index value;//碼值

		int bf;// balance factor
		avlNode * leftptr;//左右指針
		avlNode * rightptr;
		avlNode * removeLeftmostElement(avlNode* &childptr,int &flag);//找到最左的結(jié)點
		avlNode * LL_singleRotation();//在插入時候左子樹LL失衡的時候調(diào)整,返回新的樹根的指針
		avlNode * RR_singleRotation();//在插入時候右子樹RR失衡的時候調(diào)整,返回新的樹根的指針
		avlNode * LR_doubleRotation();//在插入時候左子樹LR失衡的時候調(diào)整,返回新的樹根的指針
		avlNode * RL_doubleRotation();//在插入時候右子樹RL失衡的時候調(diào)整,返回新的樹根的指針
	
};


avlNode::avlNode(Index val)
{
	value=val;
	leftptr=NULL;
	rightptr=NULL;
	bf=0;
}


void avlNode::release()
{
	if (leftptr)
	{//刪除左子樹中的結(jié)點
		leftptr->release();//遞歸調(diào)用
		delete leftptr;
		leftptr=0;
	}
	if (rightptr)
	{//刪除右子樹中的結(jié)點
		rightptr->release();//遞歸調(diào)用
		delete rightptr;
		rightptr=0;
	}
}


int avlNode::add(avlNode* &rp,Index val)
{//返回值表明以當(dāng)前結(jié)點為根的樹是否再插入之后增高,0:非增高,非0:增高
	if (val.account <value.account)
	{//左子樹插入
		if (rp->leftptr==NULL)
			rp->leftptr=new avlNode(val);
		else if(rp->leftptr->add(rp->leftptr,val)==0)//插入后子樹沒有增高
			return 0;
		if (rp->bf==-1)
		{//原來已經(jīng)傾斜,左邊失衡,需要做平衡處理
	       if (rp->leftptr->bf<0)  //插入在左側(cè),單旋轉(zhuǎn)
	             rp = LL_singleRotation();
	       else rp = LR_doubleRotation();	//插入在右側(cè),雙旋轉(zhuǎn)
		   return 0;
		}
		return --bf;   // bf=(0, +1)的情況,不需要調(diào)整樹,只要修改bf
	}
	else
	{
		if (rp->rightptr==NULL)
			rp->rightptr=new avlNode(val);
		else if (rp->rightptr->add(rp->rightptr,val)==0)//插入后子樹沒有增高 
			return 0;
		if(rp->bf==1)
		{//原來已經(jīng)傾斜,需要做平衡處理
	       if (rp->rightptr->bf>0)    //插入在右側(cè),單旋轉(zhuǎn)
	           rp = RR_singleRotation();
	       else rp = RL_doubleRotation();  //插入點在右側(cè).雙旋轉(zhuǎn)
		   return 0;
		}
		return ++bf; // bf=(0, -1)的情況,不需要調(diào)整樹,只要修改bf
	}
}


avlNode* avlNode::remove(Index val,avlNode* &waste,int &flag)
{
	if (val.account==value.account)
	{
		waste=this;
		//當(dāng)沒有右子樹的時候返回左子樹
		if(rightptr==NULL)
		{
			flag=1;
			return leftptr;
		}
		//刪除右子樹中的最小結(jié)點
		int oldbf=rightptr->bf;
		avlNode* newroot;
		rightptr=rightptr->removeLeftmostElement(newroot,flag);//找到后返回已經(jīng)平衡的avl樹的根指針
		newroot->leftptr=leftptr;
		newroot->rightptr=rightptr;
		if((flag==1)&&(bf==1))
			flag=1;
		else flag=0;
		if(flag==1)
		{
			newroot->bf=bf--;
		}
		else newroot->bf=bf;
        //左樹的平衡
		avlNode* rightchild=newroot->rightptr;
	    if (rightchild==NULL) 
		    bf--;
	    else if((rightchild->bf!=oldbf)&&(rightchild->bf==0))
		    bf--;
    	if (bf<-1)
		{
		    int newoldbf=newroot->leftptr->bf;
	        if (newoldbf>0)
			{//雙旋轉(zhuǎn)
    	       return newroot->LR_doubleRotation();
			}
	        else
			{//單旋轉(zhuǎn)
		       return newroot->LL_singleRotation();
           	}
		}
	    return newroot;
		
	}
	else if(val.account<value.account)
	{//從左子樹中刪除
		if(leftptr==NULL)
			return this;
		//執(zhí)行刪除
		int oldbf=leftptr->bf;
		leftptr=leftptr->remove(val,waste,flag);//遞歸調(diào)用
        //調(diào)整左子樹
        avlNode* leftchild=leftptr;
	    //計算刪除后的子樹對當(dāng)前的根結(jié)點的平衡因子的影響
	    if (leftchild==NULL)
		   bf++;
	    else if((leftchild->bf!=oldbf)&&(leftchild->bf==0))
		   bf++;
	    if (bf>1)//失衡
		{//調(diào)整
		   int newoldbf=rightptr->bf;
	       if (newoldbf<0)//雙旋轉(zhuǎn)
		   {
	           return RL_doubleRotation();
		   }
	       else
		   {//單旋轉(zhuǎn)
		       avlNode* temp= RR_singleRotation();
			   if(flag==1)
				   bf++;
			   return temp;
		   }
		}
    	return this;
	}
	else
	{//從右子樹中刪除
		if(rightptr==NULL)
			return this;
		//執(zhí)行刪除
		int oldbf=rightptr->bf;
		rightptr=rightptr->remove(val,waste,flag);//遞歸調(diào)用
		//調(diào)整右子樹
		avlNode* rightchild=rightptr;
    	if (rightchild==NULL) 
		  bf--;
	    else if((rightchild->bf!=oldbf)&&(rightchild->bf==0))
		  bf--;
	    if (bf<-1)
		{
		  int newoldbf=leftptr->bf;
	      if (newoldbf>0)
		  {//雙旋轉(zhuǎn)
    	      return LR_doubleRotation();
		  }
	      else
		  {//單旋轉(zhuǎn)
			  avlNode* temp= LL_singleRotation();
			  if(flag==1)
			    bf--;
			   return temp;
		   }
		} 
	    return this;
	}
}

avlNode* avlNode::removeLeftmostElement(avlNode* &childptr,int &flag)
{//flag 表示子樹高度是否變化
	avlNode* leftchild=leftptr;
	//找到最小的值,返回,否則遞歸調(diào)用
	if (leftchild==NULL)
	{
		childptr=this;
		flag=1;
		return rightptr;
	}
	int oldbf=leftchild->bf;
	leftptr=leftchild->removeLeftmostElement(childptr,flag);//遞歸調(diào)用
	//調(diào)整左子樹平衡
	avlNode* newleftchild=leftptr;
	//計算刪除后的子樹的高度變化
	if((newleftchild==NULL)&&(rightptr==NULL))
		flag=1;
	//計算刪除后的子樹對當(dāng)前的根結(jié)點的平衡因子的影響
	if (newleftchild==NULL)
		bf++;
	else if((newleftchild->bf!=oldbf)&&(newleftchild->bf==0))
		bf++;
	if (bf>1)//失衡
	{//調(diào)整
		int newoldbf=rightptr->bf;
	    if (newoldbf<0)//雙旋轉(zhuǎn)
		{
	       return RL_doubleRotation();
		}
	    else
		{//單旋轉(zhuǎn)
		   return RR_singleRotation();
		}
	}
	return this;
}


avlNode* avlNode::findNodeValue(Index val)
{
	if (val.account==value.account)
	{
		return this;
	}
	else if (val.account>value.account)
	{//大于的話在右子樹中查找
		if (rightptr!=NULL)
			return rightptr->findNodeValue(val);//遞歸調(diào)用
		else 
			return NULL;
	}
	else
	{//小于的話在左子樹中查找
		if (leftptr!=NULL)			
			return leftptr->findNodeValue(val);//遞歸調(diào)用
		else
			return NULL;
	}
}

avlNode* avlNode::LL_singleRotation()
{
	avlNode *p;
	p=leftptr;
	leftptr=p->rightptr;
	bf=0;
	p->rightptr=this;
    if(p->bf==0)
	  p->bf=1;
	else p->bf=0;
	return p;
}

avlNode* avlNode::LR_doubleRotation()
{
	avlNode *p,*q;
	q=leftptr;
	p=q->rightptr;
	q->rightptr=p->leftptr;
	leftptr=p->rightptr;
	p->leftptr=q;
	bf=q->bf=0;
	if(p->bf==-1) bf=1;
	if(p->bf==1) q->bf=-1;
	p->rightptr=this;
	p->bf=0;
	return p;
}

avlNode* avlNode::RR_singleRotation()
{
	avlNode *p;
	p=rightptr;
	rightptr=p->leftptr;
	bf=0;
	p->leftptr=this;
    if(p->bf==0) 
	  p->bf=-1;
	else p->bf=0;
	return p;
}

avlNode* avlNode::RL_doubleRotation()
{
	avlNode *p,*q;
	q=rightptr;
	p=q->leftptr;
	q->leftptr=p->rightptr;
	rightptr=p->leftptr;
	p->rightptr=q;
	bf=q->bf=0;
	if(p->bf==-1) q->bf=1;
	if(p->bf==1) bf=-1;
	p->leftptr=this;
	p->bf=0;
	return p;
}

void InsertAccount(int acc)
{
	Item newuser;
	int pass1,pass2;
	printf("您的帳號是:%d\n",acc);
	printf("請輸入您的密碼:");
	scanf("%d",&pass1);
	bool flag=false;
	while(flag==false)
	{
		printf("請確認,再次輸入您的密碼:");
		scanf("%d",&pass2);
		if(pass1==pass2)
		{
			newuser.password=pass1;
			flag=true;
		}
		else
			printf("密碼不匹配,請重新輸入\n");
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色综合久久久久婷婷| 日韩精品亚洲一区| 伊人开心综合网| 国产精品久久久久一区二区三区 | 丰满白嫩尤物一区二区| 久久99国内精品| 精品一区二区三区视频在线观看| 五月开心婷婷久久| 亚洲综合另类小说| 久久国产福利国产秒拍| 粉嫩一区二区三区性色av| 色诱视频网站一区| 日韩欧美一级在线播放| 国产日韩精品视频一区| 悠悠色在线精品| 麻豆成人免费电影| av影院午夜一区| 91精品久久久久久久99蜜桃 | 国产精品美日韩| 日本在线不卡一区| 在线免费不卡视频| 欧美疯狂做受xxxx富婆| 亚洲男人都懂的| 丁香婷婷综合色啪| 宅男在线国产精品| 一区二区三区在线高清| 成人性生交大片免费看在线播放| 欧美日韩中文国产| 亚洲女爱视频在线| 激情综合亚洲精品| 91精品蜜臀在线一区尤物| 亚洲综合免费观看高清完整版 | 欧美优质美女网站| 国产精品久久久久精k8| 久久国内精品视频| 欧美一级理论片| 老司机精品视频一区二区三区| 欧美日韩精品专区| 麻豆精品久久久| 91精品国产乱码| 天堂av在线一区| 欧美久久久久久久久中文字幕| 亚洲视频一区二区在线| 99这里只有久久精品视频| 国产精品乱码妇女bbbb| av在线综合网| 亚洲成人免费影院| 337p粉嫩大胆色噜噜噜噜亚洲| 国产乱淫av一区二区三区| 欧美极品少妇xxxxⅹ高跟鞋 | 精品视频一区二区三区免费| 亚洲高清三级视频| 56国语精品自产拍在线观看| 黑人精品欧美一区二区蜜桃| 欧美国产精品一区二区| 99精品欧美一区二区蜜桃免费| 亚洲成人1区2区| 国产亚洲欧美日韩日本| 色94色欧美sute亚洲线路一ni| 日韩中文字幕一区二区三区| 亚洲国产高清aⅴ视频| 色94色欧美sute亚洲13| 韩国三级电影一区二区| 国产精品蜜臀av| 91精品一区二区三区久久久久久 | 久久99久久99精品免视看婷婷| 亚洲人成精品久久久久| 欧美精品乱人伦久久久久久| 国产老肥熟一区二区三区| 亚洲日本中文字幕区| 2020国产精品| 精品久久久久99| 不卡的电影网站| 日韩vs国产vs欧美| 亚洲视频资源在线| 国产精品视频线看| 亚洲国产精品av| 久久精品欧美一区二区三区麻豆| 欧美久久一二区| 欧美性videosxxxxx| 91免费版pro下载短视频| av电影在线观看一区| 成人夜色视频网站在线观看| 国产精品小仙女| 成人免费毛片a| 91玉足脚交白嫩脚丫在线播放| 国产乱一区二区| 国产91丝袜在线观看| 成人伦理片在线| 在线观看不卡一区| 欧美三级视频在线播放| 4438成人网| ww亚洲ww在线观看国产| 国产欧美精品在线观看| 亚洲视频一二三| 日韩综合一区二区| 国产一区在线看| 成人性视频网站| 欧美视频精品在线观看| 日韩一区二区精品在线观看| 精品国产凹凸成av人导航| 亚洲国产成人在线| 午夜一区二区三区在线观看| 国产成人精品综合在线观看 | 欧美自拍偷拍午夜视频| 欧美一区二区在线免费播放| 国产偷国产偷精品高清尤物| 亚洲精品国产a久久久久久| 免费成人在线视频观看| 99精品在线观看视频| 91麻豆精品国产91久久久使用方法 | 亚洲综合av网| 成人av高清在线| 久久综合九色综合欧美亚洲| 一区二区三区日韩| 成人精品亚洲人成在线| 日韩美女一区二区三区四区| 亚洲午夜在线观看视频在线| av在线播放不卡| 国产精品视频线看| 国产精品综合av一区二区国产馆| 欧美欧美午夜aⅴ在线观看| 亚洲色图制服丝袜| 97精品视频在线观看自产线路二| 久久精品人人做人人爽人人| 久久精品久久久精品美女| 欧美精品在线一区二区三区| 日韩av二区在线播放| 91精品欧美久久久久久动漫| 婷婷国产在线综合| 欧美一区二区免费观在线| 尤物视频一区二区| 欧美日韩精品久久久| 一区二区免费在线播放| 在线观看欧美日本| 午夜影院久久久| 精品久久久久99| 成人天堂资源www在线| 欧美视频在线不卡| 国产亚洲欧美一区在线观看| 成年人午夜久久久| 国产精品麻豆久久久| 不卡一区二区三区四区| 一区二区三区四区在线播放 | 国产精品一区二区三区乱码| 久久久精品综合| 91福利精品第一导航| 免费成人在线观看| 亚洲精品欧美二区三区中文字幕| 欧美久久久久久久久中文字幕| 精彩视频一区二区三区| 综合激情成人伊人| 欧美mv日韩mv国产网站| 91丝袜国产在线播放| 另类小说视频一区二区| 亚洲欧美日韩在线播放| 日韩欧美国产一区二区三区| 97国产一区二区| 狠狠色丁香婷综合久久| 五月激情综合网| 国产精品精品国产色婷婷| 日韩免费成人网| 欧美人动与zoxxxx乱| 99麻豆久久久国产精品免费| 久久精品99国产精品日本| 日韩一区欧美二区| 亚洲夂夂婷婷色拍ww47 | 粉嫩一区二区三区在线看| 日韩av一区二区三区| 亚洲男人的天堂一区二区| 欧美激情一区二区三区在线| 精品欧美一区二区三区精品久久| 欧美日韩美女一区二区| 精品视频在线看| 欧美日韩一区二区三区视频| 色综合 综合色| 在线国产电影不卡| 欧美私模裸体表演在线观看| 91亚洲国产成人精品一区二三| 成人精品国产一区二区4080| 成人综合在线网站| 91免费看`日韩一区二区| 一本色道亚洲精品aⅴ| 欧美三级在线播放| 久久久久久免费网| 日韩久久一区二区| 午夜精品久久一牛影视| 日本欧美一区二区| 韩国女主播成人在线观看| 成人黄色av网站在线| 欧美日韩午夜在线| 国产亚洲精品bt天堂精选| 亚洲综合在线免费观看| 美女高潮久久久| 91亚洲资源网| 日韩免费高清av| 亚洲午夜激情网站| 成+人+亚洲+综合天堂| 日韩一二三区不卡| 亚洲日本中文字幕区|