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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? expbintree.h

?? 數據結構基本算法設計 用C++實現一個計算器,計算器需具有基本的功能
?? H
字號:
typedef int   TElemType;                    // 樹結點數據域類型為整型 
typedef float OElemType;                    // 操作數類型為浮點型

typedef struct BiTNode{                     // 二叉樹的類型定義 
   TElemType    data;
   struct BiTNode *lchild,*rchild;
} BiTNode,*BiTree;

typedef union {
	char  OPTR;                        // SElemType 可以字符也可以是 二叉樹的結點   
	BiTree  BiT; 
} SElemType;

#include"stack.h"

/************************* 出錯信息處理函數定義 ***********************/
 
void ERRORMESSAGE(char *s)                 
{
   cout<<s<<endl;
   exit(1);
} //ERRORMESSAGE

/*************************** 輸入數據的操作 ***********************/
void GetExp(char *Exp)
{//得到一個表達式,并對其進行單目運算的模式匹配
	char ch;
	int n=FALSE, i=0;
	do
	{
		cin>>ch;
 		if (n==TRUE && (ch=='-' || ch=='+'))   Exp[i++]='0';
		else n=FALSE;
		Exp[i++]=ch;
		if (ch=='(') n=TRUE;  
	}
	while (ch!='#');
	Exp[i]='\0';
}//GetExp
 
/********************表達式樹的相關操作 *******************/ 

status IN(char ch,char *OP)
{
	//判斷字符ch 是否屬于運算符集
	char *p=OP;
	while (*p && ch!=*p ) ++p;
	if (!*p) return ERROR;
	return OK;
}//IN


void ChangeOPND( char *p ,int pos, int &n, OElemType *operand)
{
	//把相應的字符串轉成對應的運算數,并存入operand數組中,pos是operand中的位序
	//使用 atof 系統函數進行轉換.
	char data[MAX_OPERAND], *q = data; 
	n=0;
	while ((*p<='9' && *p>='0') || (*p=='.'))
	{
		*q++=*p++;
		n++;
	}
	*q = '\0';
	operand[pos] = (float)atof(data);
}//ChangeOPND

void CrtNode(BiTree &T,int position ,Stack &PTR)
{
	// 建葉子結點^T, 結點中的數據項為操作數所在的operand數組中的位置
    // 建立完成后把結點裝入PTR棧
	SElemType e;
	T = new BiTNode;
	T->data = position;
	T->lchild = T->rchild = NULL;
	e.BiT = T;
	Push(PTR, e);
}//CrtNode

int ChangeOPTR(char ch)
{
	// 把相應的操作符轉成宏定義值
	int n;
	if (ch=='+') n = PLUS;
	else if (ch=='-') n = MINUS;
		 else if(ch=='*') n = ASTERISK;
			  else if(ch=='/') n = SLANT;
	return n;
}//ChangeOPTR

void CrtSubtree (BiTree &T, char ch, Stack &PTR) 
{
	// 建子樹^T, 其中根結點的數據項為操作符
    SElemType e;
	T = new BiTNode;
	T->data = ChangeOPTR(ch);
	if (Pop(PTR, e))  T->rchild = e.BiT;
	else T->rchild = NULL;
	if (Pop(PTR, e))  T->lchild = e.BiT;
	else T->lchild = NULL;
	e.BiT = T;
	Push(PTR, e);
}//CrtSubtree

status precede(char c,char ch)
{
	//算符間的優先關系表,此表表示兩操作符之間的大于小于關系
  	switch (c)
	{
	case '#':   
	case '(':	return ERROR;
	case '*':
	case '/':					
	case '+':
	case '-':	if (!(ch!='*' && ch!='/')) return ERROR;
				return OK;
	default :	return OK;
	}
}//precede

void CrtExptree(BiTree &t, char *exp, OElemType *operand, char *operate) 
{
	// 建立由合法的表達式字符串確定的只含二元操作符的
	// 非空表達式樹,其存儲結構為二叉鏈表

	SElemType e,c;
	char *p,ch;
	int pos=0,n;
 
	Stack S_OPTR,S_BiT;		// 棧S_OPTR內放表達式的操作符,棧S_BiT放生成的結點					
	InitStack(S_OPTR); 
	e.OPTR = '#';
	Push(S_OPTR,e);						// 把字符#進棧
	InitStack(S_BiT);
	
	p = exp;  ch = *p;                       // 指針p指向表達式
	GetTop(S_OPTR,e);
	while (!(e.OPTR=='#' && ch=='#'))            // 當從棧S_OPTR退出的操作符為#,且ch=='#'時循環結束
	{
		if (!IN(ch,operate))                // 判斷ch 是否屬于操作符集合operate,
		{									
			ChangeOPND(p,pos,n,operand);	// 如果不屬于操作符,把其轉成操作數
			p+=(n-1);						// 移動字符串指針	
			CrtNode( t,pos++, S_BiT);         // 建葉子結點
		
		}
		else 
		{
			switch (ch)                     // 如果屬于操作符 
			{
			case '(' : e.OPTR = ch;
					   Push(S_OPTR, e);     // 左括號先進棧
					   break;
			case ')' : {					// 脫括號創建子樹
							Pop(S_OPTR, c);	
							while (c.OPTR!= '(' )
							{ 
								CrtSubtree( t, c.OPTR,S_BiT);
								Pop(S_OPTR, c);
							}
							break; 
					   }
			default :   {
							while(GetTop(S_OPTR, c) && (precede(c.OPTR,ch))) // 棧頂元素優先權高
							{ 
								CrtSubtree( t, c.OPTR, S_BiT);               // 建子樹.
								Pop(S_OPTR, c);                          
							}
							if (ch!= '#')   
							{
								e.OPTR = ch;
								Push( S_OPTR, e);			// 如果ch不為#,讓ch進棧
							}
							break;
						} // default
			} // switch
		} // else
		if ( ch!= '#' ) { p++;  ch = *p;}					// 如果ch不為#,p指針后移
		GetTop(S_OPTR,e);
	} // while
	e.BiT = t;
	Pop(S_BiT, e);
} // CrtExptree

OElemType Value(BiTree T, OElemType *operand)
{
	// 遞歸求值,使用后序遍歷,operand數組存放葉子結點的數值
	OElemType lv,rv,v;
	if (!T) return 0;
	if (!T->lchild && !T->rchild)    return operand[T->data]; 
	lv = Value(T->lchild,operand);
	rv = Value(T->rchild,operand);
	switch (T->data)
	{
	case PLUS:  v = lv+rv; 
				break;
	case MINUS: v = lv-rv; 
				break;
	case ASTERISK: v = lv*rv; 
					break;
	case SLANT: if (rv==0)  ERRORMESSAGE("ERROR");  // 除法運算分母不能為零
				v = lv/rv; 
				break;
	}
	return v;
}//Value



 

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色视频在线| 在线观看免费视频综合| 午夜电影网亚洲视频| 亚洲另类春色国产| 亚洲欧美经典视频| 一区二区三区四区蜜桃| 亚洲综合在线免费观看| 亚洲第一狼人社区| 免费看日韩精品| 精品一区二区三区在线播放视频| 日韩二区三区在线观看| 免费成人结看片| 国产激情一区二区三区桃花岛亚洲| 韩国午夜理伦三级不卡影院| 国产成人免费9x9x人网站视频| 成人一区在线看| 欧美中文字幕一区| 日韩欧美综合一区| 国产精品久久三| 亚洲一级二级三级在线免费观看| 日韩福利视频网| 国产a区久久久| 欧美亚洲综合久久| 日韩小视频在线观看专区| 国产婷婷色一区二区三区四区| 中文字幕日本不卡| 午夜av一区二区三区| 国产在线视频一区二区| 波多野结衣精品在线| 欧美日韩国产另类不卡| 欧美r级在线观看| 亚洲色图另类专区| 免费观看日韩av| 91农村精品一区二区在线| 欧美精品 日韩| 国产精品欧美一区二区三区| 亚洲国产一区二区在线播放| 国产一区二区三区在线观看免费视频| 9l国产精品久久久久麻豆| 欧美精品在线一区二区| 亚洲情趣在线观看| 欧美96一区二区免费视频| 成人h精品动漫一区二区三区| 欧美亚洲精品一区| 亚洲国产精品精华液2区45| 午夜视频在线观看一区二区 | 国内精品第一页| 色8久久精品久久久久久蜜| 精品成人私密视频| 亚洲国产日韩综合久久精品| 国产乱码精品一区二区三区五月婷| 在线影院国内精品| 欧美国产日韩在线观看| 久久不见久久见中文字幕免费| 色综合久久久网| 中文久久乱码一区二区| 伦理电影国产精品| 欧美性三三影院| 亚洲日本va在线观看| 国模少妇一区二区三区| 欧美一级艳片视频免费观看| 亚洲日穴在线视频| av中文字幕不卡| 国产欧美视频在线观看| 韩日欧美一区二区三区| 91精品国产91综合久久蜜臀| 亚洲一区二区在线免费看| 99久久免费精品| 中文字幕精品一区二区精品绿巨人| 蜜桃视频免费观看一区| 欧美一区二区成人6969| 午夜成人免费电影| 欧美日本国产视频| 亚洲一区在线视频| 在线观看视频91| 亚洲成人777| 欧美老年两性高潮| 日韩av一区二区三区四区| 欧美日韩aaaaa| 丝袜美腿亚洲一区| 欧美电影在线免费观看| 五月天激情综合| 精品国产乱码91久久久久久网站| 日本女人一区二区三区| 91精品国产丝袜白色高跟鞋| 天天色图综合网| 日韩一区二区在线免费观看| 理论片日本一区| 国产喂奶挤奶一区二区三区| jlzzjlzz国产精品久久| 成人欧美一区二区三区白人| 一本色道a无线码一区v| 亚洲午夜一区二区| 欧美精品日韩综合在线| 免费在线观看成人| 久久众筹精品私拍模特| 国产98色在线|日韩| 最新国产精品久久精品| 色噜噜狠狠色综合中国| 亚洲电影第三页| 精品国产乱码久久久久久久 | 99精品桃花视频在线观看| 亚洲欧美日韩国产手机在线| 日本久久精品电影| 日韩和欧美一区二区| 久久久久97国产精华液好用吗| 成人午夜激情影院| 夜夜嗨av一区二区三区| 欧美一级视频精品观看| 国产精品影视在线观看| 亚洲黄色小视频| 精品91自产拍在线观看一区| 不卡一卡二卡三乱码免费网站| 亚洲精品视频观看| 日韩欧美你懂的| 91麻豆成人久久精品二区三区| 午夜精品久久久久久久99水蜜桃 | 日韩欧美一区电影| 国产精品1区2区3区在线观看| 亚洲欧美电影一区二区| 亚洲精品videosex极品| 日韩一区二区影院| 欧日韩精品视频| 国产原创一区二区三区| 亚洲成人在线免费| 国产精品久久久久影院亚瑟| 制服丝袜国产精品| 99re亚洲国产精品| 国产一区 二区| 亚洲v精品v日韩v欧美v专区| 欧美激情一区二区在线| 欧美一区二区日韩一区二区| 99re热这里只有精品视频| 久久er99精品| 婷婷中文字幕一区三区| 亚洲欧美日韩中文字幕一区二区三区| 日韩欧美国产一区在线观看| 欧美丝袜丝nylons| av动漫一区二区| 国产成人夜色高潮福利影视| 久久99精品一区二区三区| 亚洲1区2区3区4区| 亚洲午夜在线观看视频在线| 亚洲视频一二三区| 国产精品福利一区二区三区| 久久婷婷国产综合精品青草| 日韩亚洲欧美成人一区| 337p亚洲精品色噜噜狠狠| 91视频国产资源| 成人sese在线| 成人免费看片app下载| 国产精品综合一区二区| 国产精品一区二区黑丝| 国产制服丝袜一区| 国产米奇在线777精品观看| 美女诱惑一区二区| 丝袜脚交一区二区| 欧美a级一区二区| 蜜桃精品视频在线观看| 裸体健美xxxx欧美裸体表演| 热久久国产精品| 激情偷乱视频一区二区三区| 国精产品一区一区三区mba桃花| 国产一区视频在线看| 韩国女主播成人在线| 国产一区视频导航| 盗摄精品av一区二区三区| 粉嫩绯色av一区二区在线观看| 国产成人免费xxxxxxxx| 成人理论电影网| 91麻豆精品在线观看| 欧美午夜电影网| 精品国产91乱码一区二区三区 | 国产精品一区二区在线观看不卡| 国产一区二区三区精品欧美日韩一区二区三区| 久久精品国产亚洲高清剧情介绍| 精品亚洲成a人| 97se亚洲国产综合在线| 欧美无乱码久久久免费午夜一区 | 国产精品久久久久久久久免费樱桃| 国产精品久久三区| 亚洲国产综合视频在线观看| 美女网站视频久久| 成人黄色片在线观看| 欧美日韩一级二级| 国产三级精品在线| 亚洲第一电影网| 国产精品1区2区3区在线观看| fc2成人免费人成在线观看播放| 欧美日韩视频在线观看一区二区三区| 欧美一区二区三区在| 国产精品网曝门| 日韩在线卡一卡二| 成人午夜看片网址| 欧美高清视频不卡网| 国产三级精品在线| 视频一区视频二区在线观看| 国产91丝袜在线播放0| 欧美裸体bbwbbwbbw| 国产精品初高中害羞小美女文|