下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1 .實驗題目棧和隊列的應(yīng)用2 .實驗內(nèi)容算術(shù)表達式求值3 .實驗?zāi)康恼莆諚:完犃械母拍罴肮ぷ髟?,運用其原理完成實驗題目中的內(nèi)容。4 .實驗要求為了更好的掌握與理解課堂上老師所講的概念與原理,實驗前要認(rèn)真預(yù)習(xí)所 做的實驗內(nèi)容及編寫源程序偽碼(寫在紙上及盤中均可)以便在實驗課中完成老 師所布置的實驗內(nèi)容。5 .概要設(shè)計原理6 .詳細(xì)程序清單及注釋說明#include <stdio.h>#include <iostream.h>#include <stdlib.h>#include <string.h># define NULL 0# define
2、 OK 1# define OVERFLOW -2# define STACK_INIT_SIZE 100# define STACKINCREMENT 20/*定義字符類型棧*/ typedef struct fint stacksize;char *base;char *top;(SqStack;/*全局變量*/SqStack OPTR,OPND;定義運算符棧和操作數(shù)棧 char expr255; /*存放表達式串*/ char *ptr=expr;int InitStack(SqStack *s) 構(gòu)造運算符棧s->base=(char *)maIloc(STACK_INIT_SI
3、ZE*sizeof(char); if(!s->base) exit(OVERFLOW);s->top=s->base;s->stacksize=STACKJNIT_SIZE: return OK;charln(charch) 判斷字符是否是運算符,運算符即返回1(retum(ch='+'llch='-'llch='*'llch=7'llch='('llch=')'llch=#);int Push(SqStack *s,char ch) 運算符棧插入ch為新的棧頂元素(*s->
4、top=ch;s->top+;return 0;charPop(SqStack*s) 刪除運算符棧s的棧頂元素,用p返回其值 (char p;s->top-;p=*s->top;return p;)char GetTop(SqStack s)用p返回運算符棧s的棧頂元素(char p=*(s.top-l);return p;/*判斷運算符優(yōu)先權(quán),返回優(yōu)先權(quán)高的*/char Precede(char c 1 ,char c2)(int i=0,j=0;static char array49='>!<;k',>> '>
5、9;< ><','<'>'<'!'< '< '< <switch(c 1)/* i為下面array的橫標(biāo)*/ case '+' : i=O;break; case : i=l;break; case : i=2;break; case 7 : i=3;break; case : i=4;break; case y : i=5;break; case : i=6;break;)switch(c2)/* j為下面array的縱標(biāo)*/case '+
6、9; : j=O;break;case : j=l;break;case: j=2;break;case 71: j=3;break;case V : j=4;break; case *)*: j =5;break; case *#*: j=6;break;)return (array7*i+jj); /* 返回運算符 */ 1/*操作函數(shù)*/int Operate(int a,char opjnt b)(switch(op)case '+' : return (a+b);case: return (a-b);case: return (a*b);case 7 : return
7、 (a/b);)return 0;)int num(int n)返回操作數(shù)的長度char p 101;itoa(n,p,10);把整型轉(zhuǎn)換成字符串型 n=strlen(p);return n;int EvaluateExpression()主要操作函數(shù)char c,theta,x; int n,m;int a,b;c = *ptr+;while(c!='#,IIGetTop(OPTR) !='#')(if(!In(c) if(!In(*(ptr-l) ptr=ptr-l;m=atoi(ptr); 取字符串前面的數(shù)字段 n=num(m);Push(&OPND,m)
8、;ptr=ptr+n;c=*ptr+;)elseswitch(Precede(GetTop(OPTR),c)(case,<,:Push(&OPTR,c);c=*ptr+:break; case=,:x=Pop(&OPTR);c=*ptr+;break; case'':theta=Pop(&OPTR); b=Pop(&OPND); a=Pop(&OPND);Push(&OPND,Operate(a,theta,b);break;)return GetTop(OPND);)int main()(printf("請輸入正
9、確的表達式以#結(jié)尾:n ");do gets(expr);) while(! *expr);InitStack(&OPTR); /*初始化運算符棧*/ Push(&OPTR:#1); /*將#壓入運算符棧*/ InitStack(&OPND); /*初始化操作數(shù)棧*/ printf("表達式的運算結(jié)果為:%dn ",EvaluateExpression(); getchar();return 0;7 .運行與測試及結(jié)果Bl 二 e e 9 Q又 dddeeee e fCA WC; Docu>ent s and 5”“11&541>11115,131:。1桌面。61)11名運用棧表達式求
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國煤炭檢測實驗分析儀器行業(yè)全國市場開拓戰(zhàn)略制定與實施研究報告
- 2025-2030年中國燃料電池電堆行業(yè)商業(yè)模式創(chuàng)新戰(zhàn)略制定與實施研究報告
- 新形勢下物業(yè)管理行業(yè)可持續(xù)發(fā)展戰(zhàn)略制定與實施研究報告
- 2025-2030年中國有限服務(wù)酒店行業(yè)開拓第二增長曲線戰(zhàn)略制定與實施研究報告
- 2025-2030年中國溫度控制器行業(yè)并購重組擴張戰(zhàn)略制定與實施研究報告
- 2025-2030年中國汗蒸館行業(yè)開拓第二增長曲線戰(zhàn)略制定與實施研究報告
- 市政道路工程監(jiān)理竣工質(zhì)量評估報告
- 學(xué)校修建綜合樓申請報告
- 四年級數(shù)學(xué)(小數(shù)加減運算)計算題專項練習(xí)與答案
- 皮草面料知識培訓(xùn)課件
- 銀行反恐應(yīng)急預(yù)案及方案
- 關(guān)于推某某同志擔(dān)任教育系統(tǒng)實職領(lǐng)導(dǎo)職務(wù)的報告(職務(wù)晉升)
- 2023消防安全知識培訓(xùn)
- 鄰近鐵路營業(yè)線施工安全監(jiān)測技術(shù)規(guī)程 (TB 10314-2021)
- Exchange配置與規(guī)劃方案專項方案V
- 三年級上冊脫式計算練習(xí)200題及答案
- 新生兒腭裂護理查房課件
- 二年級下冊科學(xué)課程綱要
- 前交叉韌帶重建術(shù)后康復(fù)訓(xùn)練
- 河南近10年中考真題數(shù)學(xué)含答案(2023-2014)
- 八年級上學(xué)期期末家長會課件
評論
0/150
提交評論