資源簡介
利用棧實現算術表達式的求值,表達式中可包含加+、減(負) -、乘*、除/、
乘方^、括號( )運算符,操作數可以為浮點數。 可采用直接求中綴表達式的方法,
也可采用先轉換成后綴表達式后再求值的方法(參看課件) 。
實現時需注意如下:
( 1)帶小數點的數值生成 ( 理解整數數值的生成,小數部分的處理與之類似)。
( 2)考慮負號的情況。負號與減號形式上一樣,如何區分?
? 輸入的表達式串中第 1 個字符是’-’
– 可斷定此’-’是負號
? 其余的’-’
– 若緊接在’(’之后的’-’可斷定是負號
( 3)負號的處理
? 方法 1:若已斷定是負號,可先壓入數值 0 進入操作數棧,如此,可
將負號看作減號。
? 方法 2: 若已斷定是負號,則緊接其后的數字字符轉換成數值后,要
將其對應的相反數(負數)壓入操作數棧

代碼片段和文件信息
#include“Sqstack.h“
#include“other.h“
int?main()
{
char?str[100];
linkStack?OPTR;?????????????????????????????????????//創建運算符棧
????linkStack1?OPND;????????????????????????????????????//創建操作數
printf(“請輸入表達式:\n“);
printf(“如:a+b*c#\n“);
scanf(“%s“&str);
printf(“表達式值:“);
printf(“%lf\n“Evluateexpression(strOPTROPND));???//輸出最后計算結果
DestoryStack(OPTR);?????????????????????????????????//銷毀棧
DestoryStack(OPND);
printf(“棧已成功銷毀!\n“);
return?0;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????????510??2015-10-29?19:53??表達式求值\ex
?????文件????????1062??2015-11-03?10:45??表達式求值\Sqstack.cpp
?????文件????????1128??2015-10-29?19:41??表達式求值\Sqstack.h
?????文件????????2027??2015-12-26?16:23??表達式求值\other.cpp
?????文件?????????270??2015-10-29?21:13??表達式求值\other.h
?????文件?????????528??2015-10-29?19:07??表達式求值\表達式求值.dsw
?????目錄???????????0??2016-10-15?17:15??表達式求值\
評論
共有 條評論