棧的乙個應用表示式求值

2021-06-15 20:17:06 字數 1520 閱讀 5149

/****************************************

棧的乙個應用表示式求值

寫者:顏清國 06.3.20

****************************************/

#include "stdio.h"

#include "string.h"

#define max 100

typedef struct sstack

stack;

/*入棧操作*/

void push(stack *ta,char p)

/*出棧,返回棧頂的值*/

char pop(stack *ta)

else

return temp;

}/*輸出棧*/

void dispstack(stack ta)

printf("the stack elem are:");

for(;i< ta.top;i++)

printf("%c",ta.str[ta.top]);

}/******************************

將中綴表示式轉化為字尾表示式

*******************************/

void trans(char mid,char last)

push(&temp,mid[lm]);/*自己入棧*/

break;

case '*':

case '/':

while((temp.str[temp.top]=='*')

||(temp.str[temp.top]=='/'))

push(&temp,mid[lm]); /*自己入棧*/

break;

case '(':

push(&temp,'('); /*是'('直接入棧*/

break;

case ')':

while(temp.str[temp.top]!='(')

pop(&temp); /*將'('出棧,自己不入棧*/

break;

default:

if((mid[lm] > '0')&&(mid[lm] <= '9'))/*可以遮蔽其它字元*/

last[la++]='#'; /*數字之間用分隔符隔開*/

lm--;/*需要退回來*/

}break;

} lm++; /*依次掃瞄待轉換的字串*/

} while(temp.top > 0) /*第0個元素為'(',不用儲存*/

last[la]='/0'; /*標誌字尾表示式結束*/

}int result(char str)

top++;

temp[top]=total;

i--;

break;

} i=i+2; /*去掉'#'號*/

} return temp[1];

}void main()

棧應用 表示式求值

include stdafx.h include using namespace std const int explenght 20 const int stack init size 20 const int stack incrment 10 templateclass stack stack...

棧應用 表示式求值

include include define length 100 初始分配棧的長度 define add len 10 棧長增量 typedef struct 定義字元棧 sqstack void initstack sqstack s 初始化乙個棧 void push sqstack s,int...

表示式求值 棧的應用

表示式求值 西西設計的機械人卡多掌握了加減法運算以後,最近又學會了一些簡單的函式求值,比如,它 知道函式min 20,23 的值是20 add 10,98 的值是108等等。經過訓練,西西設計的機械人卡多 甚至會計算一種巢狀的更複雜的表示式。假設表示式可以簡單定義為 1.乙個正的十進位制數 x 是乙...