改進(jìn)版:
#include
#include
#include
#include
#defineERROR0
#defineOVERFLOW-2
#defineOK 1
typedefint status;
typedef char SElemType;
//////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////
#defineSTACK_INIT_SIZE100
#defineSTACKINCRMENT 10
typedef struct{
SElemType*base;
SElemType *top;
int stacksize;
}SqStack;
status initstack(SqStack *S)
{//構(gòu)造一個(gè)空棧.
(*S).base=(SElemType * )malloc(STACK_INIT_SIZE * sizeof(SElemType));
if(!(*S).base)return(ERROR);
(*S).top=(*S).base;
(*S).stacksize=STACK_INIT_SIZE;
return(OK);
}
status push(SqStack *S,SElemType e)
{// 操作數(shù)和運(yùn)算符依此進(jìn)棧.
if((*S).top - (*S).base >=(*S).stacksize)
{
(*S).base =(SElemType * )realloc((*S).base,((*S).stacksize + STACKINCRMENT) *
sizeof(SElemType));
if(!(*S).base )exit(OVERFLOW);
(*S).top =(*S).base + (*S) .stacksize ;
(*S).stacksize +=STACKINCRMENT;
}
*(*S).top++=e;
return(e);
}
status pop(SqStack *S,SElemType *e)
{//出棧.
if((*S).top == (*S).base )return(ERROR);
*e=*--(*S).top ;
return (e);
}
SElemType GetTop(SqStack S)
{//取棧頂元素.
SElemType e;
if(S.base== S.top )return(OVERFLOW);
e=*(S.top-1);
return(e);
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
char Precede(char c1, char c2)
{
//符號(hào)優(yōu)先級(jí)別的判斷
switch(c1)
{
case '+':
case '-':
if(c2 == '*' || c2 == '/' || c2 == '(') return('');
break;
case'*':
case'/':
if(c2 == '(') return(''); break;
case'(':
if(c2 == ')')return('=');
else return('');break;
case'#':
if(c2 == '#')return('=');
else return('':
{
pop(&OPTR, &theta);
pop(&OPND, &b);
pop(&OPND, &a);
push(&OPND,Operate(a,theta,b));
break;
}
}
}
return GetTop(OPND);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
int i;
printf("'#'為結(jié)束符!");
printf("please input a suanshi:");
i=EvaluateExpression()-'0';
printf("the result is%d\n",i);
}
試采用邏輯算式的后綴(逆波蘭)表示法來實(shí)現(xiàn)對(duì)下列算式的計(jì)算并輸出計(jì)算結(jié)果:
試采用邏輯算式的后綴(逆波蘭)表示法來實(shí)現(xiàn)對(duì)下列算式的計(jì)算并輸出計(jì)算結(jié)果:
8+6×(24-3÷(5+6×2)-6)-12
要求:
1.從鍵盤輸入公式
2.打印轉(zhuǎn)換后的該算式的后綴表達(dá)式并計(jì)算
結(jié)果.
由0和1構(gòu)成的n維方陣M表示一個(gè)迷宮,其中0表示通路,1表示墻壁.迷宮入口為(1,1),出口為(n,n).迷宮隨機(jī)產(chǎn)生.試編一算法求出從入口點(diǎn)到出口點(diǎn)可沿八個(gè)方向前進(jìn)進(jìn)行自動(dòng)尋路的遞歸程序,并顯示所找到的路徑.
入口
0 1 1 0 1
1 0 0 1 0
1 1 1 0 0
1 0 1 0 1
1 0 0 1 0出口
8+6×(24-3÷(5+6×2)-6)-12
要求:
1.從鍵盤輸入公式
2.打印轉(zhuǎn)換后的該算式的后綴表達(dá)式并計(jì)算
結(jié)果.
由0和1構(gòu)成的n維方陣M表示一個(gè)迷宮,其中0表示通路,1表示墻壁.迷宮入口為(1,1),出口為(n,n).迷宮隨機(jī)產(chǎn)生.試編一算法求出從入口點(diǎn)到出口點(diǎn)可沿八個(gè)方向前進(jìn)進(jìn)行自動(dòng)尋路的遞歸程序,并顯示所找到的路徑.
入口
0 1 1 0 1
1 0 0 1 0
1 1 1 0 0
1 0 1 0 1
1 0 0 1 0出口
其他人氣:201 ℃時(shí)間:2020-06-30 10:31:23
優(yōu)質(zhì)解答
我來回答
類似推薦
- 數(shù)據(jù)結(jié)構(gòu)試題
- 數(shù)據(jù)結(jié)構(gòu)題!
- 幾道數(shù)據(jù)結(jié)構(gòu)題
- 求助數(shù)據(jù)結(jié)構(gòu)高手……這題啊
- 大氣層是怎樣分層的?有多少層?每層密度怎樣?
- z=x^3y-3x^2y^3的二階偏導(dǎo)數(shù)
- ①已知a²+a-3=0 那么a²(a+4)的值是___
- 莎士比亞十四行詩哪些比較著名?
- 因?yàn)?/2×4/3×3/2=1,所以1/2、4/3、3/2三個(gè)數(shù)互為倒數(shù).
- 2011年4月1日泰國發(fā)生洪災(zāi),季風(fēng)來自太平洋還是印度洋?
- 1.25:x=2.5:8怎么解
- 韓愈《馬說》的問題
猜你喜歡
- 1(25加4分之3)除以4分之1加4分之1,脫式計(jì)算
- 2Can A Chinese Young Lady Become An American Woman?
- 31.宇航員身穿沉重的宇航服,還能行走自如,可能是因?yàn)椋?/a>
- 4描寫春夏秋冬好詞好句
- 5英語翻譯
- 6簡(jiǎn)要廉頗和藺相如的故事 200字左右 好的話另加分
- 7伊紅美藍(lán)培養(yǎng)基是什么培養(yǎng)基
- 8德語怎么說 我覺得 我認(rèn)為 相當(dāng)于英語的I think
- 9(一減二分之一)(三分之一減一)(一減四分之一)(五分之一減一)……(2009分之1減1)(,一減2010分之一)
- 10扣取百分之20的手續(xù)費(fèi),你必須獲利50元,該定什么價(jià)格.
- 11a為和值時(shí)適合條件x+y=2a+1和x-y=3a-2的點(diǎn)(x,y)在二象限(第二象限上的點(diǎn)(x,y)滿足x<0 y>0)
- 12證明:兩條邊上的高相等的三角形是等腰三角形.