下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——數(shù)據(jù)結(jié)構(gòu)表達(dá)式求值完整篇(含試驗報告)1、
試驗?zāi)康暮鸵?/p>
(1)深入理解棧的特點及其描述方法。
(2)能夠在兩種存儲結(jié)構(gòu)上實現(xiàn)棧抽象數(shù)據(jù)類型實現(xiàn)。(3)把握棧的幾個典型應(yīng)用算法,能靈活應(yīng)用棧解決實際問題。
2、概要設(shè)計
開始定義運算符和操作數(shù)棧并初始化并fflush(stdin)清除緩存輸入每個字符并執(zhí)行相應(yīng)的條件語句入棧出棧//比較OPTR的棧頂元素和ch的優(yōu)先級charPrecede(SElemType_OPTRtop,While(1)YEvaluateExpression()//運算并將結(jié)果出棧Operate輸出結(jié)果
3、調(diào)試分析
1.棧的定義、初始化、出棧進(jìn)棧、取棧頂元素等步驟不難就先把結(jié)構(gòu)打好了2.操作數(shù)和運算符分別入不同的棧char->int進(jìn)操作數(shù)棧
先考慮了小于10的整數(shù)直接進(jìn)棧,重點是運算符的優(yōu)先級這塊函數(shù)的編寫3前面的都聽簡單的,就是小數(shù)編寫這塊想了很久,
將單個字符轉(zhuǎn)為整數(shù)后還要定一個doublep;使依次輸入的數(shù)成一個小數(shù)->p.在小數(shù)入棧使要考慮放在那條if語句中,防止在運算結(jié)果入棧后p再次入棧,又定義了intflag;通過flag的值判定p是否入棧。并且成功入棧后p,q都要回到初始狀態(tài)。小數(shù)解決4.負(fù)數(shù)部分
探討一開始就有負(fù)數(shù)和運算符后面有負(fù)數(shù)的狀況。(比較簡單)
右圖重點。
定義了low做判定符號的標(biāo)志。假使在運算符后輸入負(fù)號則low=-1(將p入棧時入棧的是p*low),繼續(xù)輸入ch。
總結(jié):
我覺得寫的好的地方在于定義了flag,low分別作為小數(shù)入棧和負(fù)號與減號區(qū)別的條件。第一次寫這么長的代碼,還有就是將輸入的字符再轉(zhuǎn)到小數(shù)這段代碼可以留著很有用。開始考慮的大整數(shù)想麻煩了,直接用double難度降低了好多
4、測試數(shù)據(jù)與結(jié)果
輸入1--2#-1-2#-1--2#3.66+4.34#2*2+4--3^2#3.66*2+3-4#1+3-4*5/2+3.666#輸出3.000-3.0001.0008.000-1.0006.320-2.339說明減負(fù)數(shù)兩負(fù)數(shù)小數(shù)長串+乘方
序號12345675、
附錄
/*common.h*/#include\#include\#include\#include\
/*其他函數(shù)的聲明*/
doubleEvaluateExpression();//算數(shù)表達(dá)式求值的算法優(yōu)先算法
charPrecede(SElemType_OPTRtop,charch);//比較OPTR的棧頂元素和ch的優(yōu)先級
doubleOperate(SElemType_OPNDa,SElemType_OPTRtheta,SElemType_OPNDb);//運算
//?;静僮鞯暮瘮?shù)聲明
voidOPTR_InitStack(Sqstack_OPTR//運算符棧初始化voidOPND_InitStack(Sqstack_OPND//操作數(shù)棧初始化
charOPTR_GetTop(Sqstack_OPTRs);//取運算符的棧頂元素doubleOPND_GetTop(Sqstack_OPNDs);//取操作數(shù)的棧頂元素
voidOPTR_Push(Sqstack_OPTR//入棧voidOPND_Push(Sqstack_OPND//入棧
voidOPTR_Pop(Sqstack_OPTR//出棧voidOPND_Pop(Sqstack_OPND//出棧
/*基本操作函數(shù)的實現(xiàn)*/#include\#include\#include\
//運算符棧初始化
voidOPTR_InitStack(Sqstack_OPTRif(!s.base)
printf(\運算符棧存儲分派失敗!\\n\s.top=s.base;
s.stacksize=MAXSIZE;}
//操作數(shù)棧初始化
voidOPND_InitStack(Sqstack_OPNDif(!s.base)
printf(\操作數(shù)棧存儲分派失敗!\\n\s.top=s.base;
s.stacksize=MAXSIZE;}
//取操作符的棧頂元素
charOPTR_GetTop(Sqstack_OPTRs){
if(s.top!=s.base)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售合同英文范本模板
- 互聯(lián)網(wǎng)汽車后市場服務(wù)合同
- 試論勞動合同法對我國經(jīng)濟(jì)的影響
- 二零二五年度個人文化活動經(jīng)紀(jì)傭金代理合同4篇
- 二零二五版物流倉儲運輸與供應(yīng)鏈金融服務(wù)合同3篇
- 過戶房屋買賣合同
- 酒水銷售合同
- 二零二五年度體育賽事門票個人代理合同4篇
- 二零二五年度旅游行業(yè)旅游裝備租賃合同3篇
- 2025版校園停車場委托管理與安全防護(hù)服務(wù)合同3篇
- 新能源發(fā)電項目合作開發(fā)協(xié)議
- 2025年上半年潞安化工集團(tuán)限公司高校畢業(yè)生招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 聞道課件播放器
- 03軸流式壓氣機(jī)b特性
- 五星級酒店收入測算f
- 大數(shù)據(jù)與人工智能ppt
- 人教版八年級下冊第一單元英語Unit1 單元設(shè)計
- GB/T 9109.5-2017石油和液體石油產(chǎn)品動態(tài)計量第5部分:油量計算
- 邀請函模板完整
- 2023年江蘇省南京市中考化學(xué)試卷2
評論
0/150
提交評論