免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

基于棧的中綴表達式求值(含源碼)-創(chuàng)新互聯(lián)

相關(guān)數(shù)據(jù)結(jié)構(gòu):棧

創(chuàng)新互聯(lián)服務(wù)項目包括將樂網(wǎng)站建設(shè)、將樂網(wǎng)站制作、將樂網(wǎng)頁制作以及將樂網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,將樂網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到將樂省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任! 目錄
  • 實驗內(nèi)容
  • 一、問題描述
  • 二、輸入與輸出
  • 代碼實現(xiàn)

實驗內(nèi)容

用棧解決表達式求值問題。(要求采用鏈式存儲結(jié)構(gòu))

一、問題描述

從鍵盤輸入任意中綴表達式字符串,讀字符串,利用棧結(jié)構(gòu)實現(xiàn)表達式求值。

二、輸入與輸出

輸入: 從鍵盤輸入中綴表達式,如:32+5x(6-4)#,以#作為結(jié)束符
輸出: 輸出計算結(jié)果,如:42

代碼實現(xiàn)
#include#include#include#include#define OK 1


//定義操作數(shù)棧存儲結(jié)構(gòu) 
typedef struct caozs
{int data;
 	caozs *next;
}caozs,*caozsLink;

//定義操作符棧存儲結(jié)構(gòu) 
typedef struct caozf
{char data;
 	caozf *next;
}caozf,*caozfLink;


int initcaozf(caozfLink &s);
int initcaozs(caozsLink &s);
char* input_expr();
int just(char a);
int tran(char *a,int j);
caozsLink input_opnd(int m,caozsLink num);
caozfLink input_optr(char a,caozfLink sym);
int just_sym(char a,char b);
int calC(int b,int a,char c);
void cal(caozsLink &num ,caozfLink &sym);
float push(caozsLink num ,caozfLink sym,char *a);



//初始化操作符棧 
int initcaozf(caozfLink &s)
{s=(caozfLink)malloc(sizeof(caozfLink));
 	s->data=35;
 	s->next=NULL;
 	return OK;
}

//初始化操作數(shù)棧
int initcaozs(caozsLink &s) 
{s=(caozsLink)malloc(sizeof(caozs));
 	s->data=0;
 	s->next=NULL;
 	return OK;
}


//表達式輸入
char* input_expr()
{char *a=(char*)malloc(sizeof(char)*100);
 	a[0]='1'; 
 	int i=-1;
 	do
	{i++;
  	a[i]=getchar();
 	}while(a[i]!='#');
 	return a;
}

//判斷a是否為數(shù)字
int just(char a) 
{if(a>47&&a<58)
	return 1;
 	else 
	return 0; 
}

//字符轉(zhuǎn)數(shù)字
int tran(char *a,int j) 
{int i=0, num1=0;
 	while(inum1+=(a[i]-48)*pow(10,j-i-1);
  	i++;
	}
 	return num1; 
}

//操作數(shù)入棧
caozsLink input_opnd(int m,caozsLink num)
{caozsLink s;
  	s=(caozsLink) malloc(sizeof(caozs));
  	s->data=m;
  	s->next=num;
  	num=s;
  	return num;
}

//操作符入棧 
caozfLink input_optr(char a,caozfLink sym)
{caozfLink s;
  	s=(caozfLink)malloc(sizeof(caozf));
  	s->data=a;
  	s->next=sym;
  	sym=s;
  	return sym;
}


int just_sym(char a,char b)
{int a1=0,b1=0;
 	if(a=='+'||a=='-')  
	 a1=1;
 	if(a=='*'||a=='/')  
	 a1=2;
 	if(a=='(') 
	 a1=3;
 	if(a==')') 
	 a1=-1;
 	if(a=='#') 
	 a1==0;
 	if(b=='#') 
	 b1==0;
 	if(b=='+'||b=='-')  
	 b1=1;
 	if(b=='*'||b=='/')  
	 b1=2;
 	if(b=='(') 
	 b1=-1;
 	if(b==')') 
	 b1=3;
 	if(a1==0 )  
	 return -2; 
 	if(a1>b1)  
	 return 1;
 	else if(a1==b1)
	{if(a1==-1)  
	  return 0;
  	  else  return -1;
 	}  
 	if(a1if(c=='+') 
	return b+a;
 	if(c=='-') 
	return b-a;
 	if(c=='*') 
	return b*a;
 	if(c=='/')
    return b/a;
}

//出棧計算
void cal(caozsLink &num ,caozfLink &sym)
{int a=num->data;
 	num=num->next;
 	int b=num->data;
 	int ss;
 	num=num;
 	ss=calC(b,a,sym->data);
 	num->data=ss;
 	sym=sym->next;
}


//入棧 
float push(caozsLink num ,caozfLink sym,char *a)
{int i=0;
 	char mm;
 	do{mm=a[i];
  		int j=0;
  		if(just(a[i])==1)
		{//a[i]是否為數(shù)字 
   			j++;
   			while(just(a[i+j])==1)//是否為多位數(shù) ,j為多位數(shù)的位數(shù)
    		j++;
   			int m=tran(&a[i],j);//轉(zhuǎn)換為數(shù)字 
   			num=input_opnd(m,num); //操作數(shù)入棧 
  			i+=j;
   		}
  		else if(just(a[i])==0)
		{switch (just_sym(a[i] ,sym->data))
			{ 		case 1: sym=input_optr(a[i],sym);break;
     		case 0:sym=sym->next; break;
     		case -1: i-=1;
      		cal(num,sym);  break;
     		case -2: while(a[i]!=sym->data)
        	cal(num,sym);
       		return num->data;
     		} 
   		i++;
  		}
 	}while(mm!='#');
}


int main()
{caozfLink sym;
 	caozsLink num;
 	initcaozf(sym);
 	initcaozs(num);
 	char *a;
 	a=input_expr();
 	int n=push(num,sym,a);
 	printf("%d",n);
	return 0;
}

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)頁標題:基于棧的中綴表達式求值(含源碼)-創(chuàng)新互聯(lián)
本文URL:http://m.newbst.com/article8/dceeip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、服務(wù)器托管、定制開發(fā)ChatGPT靜態(tài)網(wǎng)站、定制網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營