C語言棧 多位數的表示式求和

2021-08-21 08:44:03 字數 1509 閱讀 9600

#include 

#include

#include

const

char oper[7] = ;

#define ok 1

#define error 0

typedef

char selemtype;

typedef

int status;

typedef

struct snode

snode, *linkstack;

double h;//結果

double e1;//數棧

char e2;//運算子棧

linkstack initstack(linkstack s)

int stackempty(linkstack s)

linkstack push(linkstack s)

p->data = e2;

p->next = s;

s = p;

return s;

}linkstack pushint(linkstack s)

p->data = e1;

p->next = s;

s = p;

return s;

}linkstack pop(linkstack s)

linkstack popint(linkstack s)

double gettop(linkstack s)

int in(char ch) //判斷ch是否為運算子

}return0;}

char precede(char theta1, char theta2) //判斷運算子優先順序

else

if (theta1 == '(' || theta1 == '=' || theta2 == '(' || (theta1

== '+' || theta1 == '-') && (theta2 == '*' || theta2 == '/'))

else

return

'>';

}double operate(double first, char theta, double second) //計算兩數運算結果

return0;}

//演算法3.22 表示式求值

void evaluateexpression() //算術表示式求值的算符優先演算法,設optr和opnd分別為運算子棧和運算元棧

//ch不是運算子則進opnd棧

else

num = 0;

e1 = y;

opnd = pushint(opnd);

}switch (precede(gettop(optr), ch)) //比較optr的棧頂元素和ch的優先順序

//switch

}} //while

h = gettop(opnd); //opnd棧頂元素即為表示式求值結果

}int main()

}

多位數運算表示式回顧

package stack public class calculate2 else if ss.isoper expression.charat index 1 else else if ss.priority ss.top ss.priority ch else index system.out...

c 鏈棧的表示式求值 多位數以及小數求值

部分思想參考了以資料結構教材上的為基礎,進行修改。書上的棧的表示式求值個人認為挺不錯了,比較好理解。總共有三個檔案,分別時code.h code.cpp和main.cpp檔案,這三個檔案需要放在同乙個資料夾下 code.h include include include include using ...

棧的應用計算器(實現多位數字的運算)

package stack 思路分析 1.通過乙個 index 值 索引 來遍歷我們的表示式 2.如果我們發現是乙個數字,就直接入數棧 3.如果發現掃瞄到是乙個符號,就分如下情況 3.1 如果發現當前的符號棧為 空,就直接入棧 3.2 如果符號棧有操作符,就進行比較,如果當前的操作符的優先順序小於或...