表示式求值 棧的利用

2021-06-17 01:30:37 字數 1672 閱讀 2586

棧的功能

//棧的順序儲存

#include#include#define maxsize 100

typedef char elemtype;

typedef struct //sqstack

sqstack;

void init_s(sqstack *s)

/******************************檢測完畢*****************************/

void out_s(sqstack *s)//print the elems of the stack }}

/****************************檢測完畢*******************************/

void push(sqstack *s,elemtype e)

}/*********************檢測完畢**************************************/

elemtype pop(sqstack *s)

else

return x;

}

利用棧表示式求值

#include#include#include"stack.h"//計算符號棧棧

sqstack st;//符合棧

sqstack st2;//數字棧

void postfixexpress(char *exp,char *postexp);//字尾表示式

float compvalue(char *postexp);//字尾表示式求解

void main()

void postfixexpress(char *exp,char *postexp)

c=pop(&st);

exp++;

break;

case '+':

case '-':

while(st.a[st.top]!=0 && st.a[st.top]!='(')

push(&st,*exp);

exp++;

break;

case '*':

case '/':

c=pop(&st);

push(&st,c);

while(c=='*' || c=='/')

push(&st,*exp);

exp++;

break;

case ' ':break;

default:

while(*exp>='0' && *exp<='9')

postexp[i++]='#';

} }while(st.top!=-1)

postexp[i]='\0';

}float compvalue(char *postexp)

else

break;

default://處理數字字元

if(*postexp!='#' && *postexp!='\0')

push(&st2,d);

}break;

} postexp++;

} e=pop(&st2);//printf("%f",e);

return (e);

}/

利用棧對表示式求值

輸入中綴表示式空格分隔 例如 2 3 展示如下 順序從右向左,無優先順序順序,圖中順序 4 5 20,20 4 24,結果為24 考慮優先順序的運算表示式求值 以上為不考慮優先順序的表示式求值方法,那麼接下來考慮優先順序時,將考慮 換成程式設計思路 執行表示式運算時,總是將結果壓入numstack棧...

8569 利用棧實現表示式求值

include using namespace std typedef struct nnode nsnode,nslink typedef struct cnode csnode,cslink typedef struct nstacklink nstack typedef struct csta...

表示式求值(棧)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...