实验二栈与迷宫

实验二栈与迷宫

ID:41657032

大小:98.77 KB

页数:9页

时间:2019-08-29

实验二栈与迷宫_第1页
实验二栈与迷宫_第2页
实验二栈与迷宫_第3页
实验二栈与迷宫_第4页
实验二栈与迷宫_第5页
资源描述:

《实验二栈与迷宫》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实验二栈(队列)的创建与应用#include#include#defineMaxSize100#defineMaxOp7struct{charch;〃运算符intpri;〃优先级}lpri[]={{=,0},{'(;1},{‘*;2},{7',2},{宇,3},{-,3},{丁,6)},rpri[]={{=},{f,6},{*,4},{7;4},{屮,2},{-2}Q,1}};intleftpri(charop)〃求左运算符op的优先级{inti;for(i=0;i<

2、MaxOp;i++)if(lpri[i].ch==op)returnlpri[i].pri;}intrightpri(charop)〃求右运算符op的优先级{inti;for(i=0;i

3、op1,charop2)//opl和op2运算符优先级的比较结果{if(leftpri(op1)==rightpri(op2))return0;elseif(leftpri(op1)

4、ta[op.top]='=';while(*exp!=''){if(!lnOp(*exp))〃存放运算符〃栈指针〃定义运算符栈〃i作为postexp的卜•标//exp表达式未扌打描完时循环〃为数字字符的情况while(*exp>=,0,&&*exp<='9,)//判定为数字postexp[i++]=*exp;exp++;postexpLi++]=,#';〃用#标识一个数值串结束elsecase-1:〃为运算符的情况switch(Precede(op.data[op.top],*exp))op.top++;o

5、p.data[op.top]=*exp;exp++;〃继续扫描其他字符break;〃只有括号满足这种情况op.top-;〃将(退栈exp++;〃继续扫描其他字符break;〃栈顶运算符的优先级低case0:case1:〃退栈并输出到postexp111postexp[i++]=op.data[op.top];op.top—;break;}}while(op.data[op.topj!==')//jtt时exp扫描完毕,退栈到*为止{postexp[i++]=op.data[op.top];op.top—;}po

6、stexp[ij=,;〃给postexp表达式添加结朿标识}floatcompvalue(char*postexp)〃计算后缀表达式的值{structfloatdataLMaxSizeJ;inttop;}St;floatd,a,b,c;st.top=-l;while(*postexp!=W){switch(*postexp){case屮:a=st.data[st.top];st.top-;b=st.data[st.top];〃存放数值〃栈指针〃定义数值栈//postexp7符串未扫描完时循环〃判定为号〃退栈

7、収数值a〃退栈収数值b〃计算cst.top-;c=a+b;st.top++;st.data[s匸top]=c;〃将计算结果进栈break;case'・':〃判定为'・号a=st.data[st.top];st.top-;〃退栈取数值ab=st.dataLst.topJ;st.top-;〃退栈取数侑bc=b-a;〃计算Cst.top++;st.data[s匸top]=c;〃将计算结果进栈break;〃判定为*号a=st.data[st.top];st.top-;〃退栈取数值ab=st.data[st.top];s

8、t.top-;〃退栈取数值bc=a*b;〃计算cst.top++;st.data[s匸top]=c;〃将计算结果进栈break;〃判定为7'号a=st.data[st.top];st.top-;〃退栈取数值ab=st.data[st.top];st.top-;〃退栈取数值bif(a!=0)case咏:case/:c=b/a;〃计算cst.top++;st.data[s匸top]=c;〃

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。