




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
堆栈的应用 计算数学表达式的值、迷宫实验四堆栈的应用一、实验目的掌握堆栈的使用。二、实验内容1、计算数学表达式的值。输入数学表达式,输出表达式的计算结果。数学表达式由单个数字和运算符+、-、*、/、(、)构成,例如2+3*(4+5) 6/4。假定表达式输入格式合法。*2、以一个m*n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。迷宫根据一个迷宫数据文件建立。迷宫数据文件由一个包含0、1的矩阵组成。迷宫的通路可以使用通路上各点的坐标序列进行展示(使用图形展示最佳)。*计算数学表达式的值*在此没先转成后缀表达式,代码写得不好*#pragma once#includeNoMem.h#includeOutOfBounds.htemplate class Tclass Stackpublic:Stack(int MaxStackSize=10);Stack()delete stack;bool IsEmpty()constreturn top=-1;bool IsFull()constreturn top=MaxTop;T Top()const;Stack T&Add(const T&x);Stack T&Delete(T&x);private:int top;int MaxTop;T*stack;template class TStack T:Stack(int MaxStackSize)MaxTop=MaxStackSize-1;stack=new TMaxStackSize;top=-1;template class TT Stack T:Top()constif(IsEmpty()throw OutOfBounds();else return stacktop;template class TStack T&Stack T:Add(const T&x)if(IsFull()throw NoMem();stack+top=x;return*this;template class TStack T&Stack T:Delete(T&x)if(IsEmpty()throw OutOfBounds();x=stacktop-;return*this;*#pragma once class OutOfBoundspublic:OutOfBounds(void)OutOfBounds(void);*#pragma once class NoMempublic:NoMem(void)NoMem(void);*/exp4计算数学表达式的值.cpp:定义控制台应用程序的入口点。/#includestdafx.h#include string#includeStack.h#include iostream using namespace std;const int MaxLength=100;float count(const char*expr)Stack char sign(MaxLength);Stack float data(MaxLength);sign.Add(#);float j,k;char temp;int length=strlen(expr);for(int i=0;i length;i+)/couttest:exprisign:sign.Top()endl;if(expri!=+&expri!=-&expri!=*&expri!=/&expri!=(&expri!=)/expri为数据if(sign.Top()!=*&sign.Top()!=/)/expri为数据且符号栈的顶部不是*或/data.Add(float)expri-48);/coutdata:data.Top();else if(sign.Top()=*)/符号栈的顶部为*data.Delete(j);j=j*(float)expri-48);/coutdataj:j endl;data.Add(j);sign.Delete(temp);/cout sign.Top();else/符号栈的顶部为/data.Delete(j);j=j/(float)expri-48);data.Add(j);sign.Delete(temp);else if(expri=(|expri=*|expri=/)sign.Add(expri);/coutaaa:sign.Top();else if(expri=+|expri=-)if(sign.Top()!=+&sign.Top()!=-)sign.Add(expri);/coutsign+:sign.Top();else if(sign.Top()=+)data.Delete(j);data.Delete(k);k=j+k;data.Add(k);sign.Delete(temp);sign.Add(expri);elsedata.Delete(j);data.Delete(k);k=k-j;data.Add(k);sign.Delete(temp);sign.Add(expri);else/expri为)if(sign.Top()=+)data.Delete(j);data.Delete(k);k=j+k;data.Add(k);sign.Delete(temp);sign.Delete(temp);if(sign.Top()=*)data.Delete(j);data.Delete(k);k=j*k;data.Add(k);sign.Delete(temp);else if(sign.Top()=/)data.Delete(j);data.Delete(k);k=k/j;data.Add(k);sign.Delete(temp);else if(sign.Top()=-)data.Delete(j);data.Delete(k);k=k-j;data.Add(k);sign.Delete(temp);sign.Delete(temp);if(sign.Top()=*)data.Delete(j);data.Delete(k);k=j*k;data.Add(k);sign.Delete(temp);else if(sign.Top()=/)data.Delete(j);data.Delete(k);k=k/j;data.Add(k);sign.Delete(temp);elsesign.Delete(temp);if(!(sign.Top()=#)if(sign.Top()=+)data.Delete(j);data.Delete(k);k=j+k;data.Add(k);/coutlast:sign.Top();sign.Delete(temp);else if(sign.Top()=-)data.Delete(j);data.Delete(k);k=k-j;data.Add(k);/coutlast-:sign.Top();sign.Delete(temp);return data.Top();int _tmain(int argc,_TCHAR*argv)char exprMaxLength;coutType an expression of length at mostMaxLength endl;cin.getline(expr,MaxLength);coutThe result is:count(expr);system(pause);return 0;*迷宫*#pragma once class Positionpublic:friend bool FindPath();friend void OutputPath();Position(void)Position(void)private:int row;int col;*#pragma once#includeNoMem.h#includeOutOfBounds.htemplate class Tclass Stackpublic:Stack(int MaxStackSize=10);Stack()delete stack;bool IsEmpty()constreturn top=-1;bool IsFull()constreturn top=MaxTop;T Top()const;Stack T&Add(const T&x);Stack T&Delete(T&x);private:int top;int MaxTop;T*stack;template class TStack T:Stack(int MaxStackSize)MaxTop=MaxStackSize-1;stack=new TMaxStackSize;top=-1;template class TT Stack T:Top()constif(IsEmpty()throw OutOfBounds();else return stacktop;template class TStack T&Stack T:Add(const T&x)if(IsFull()throw NoMem();stack+top=x;return*this;template class TStack T&Stack T:Delete(T&x)if(IsEmpty()throw OutOfBounds();x=stacktop-;return*this;*#pragma once class NoMempublic:NoMem(void)NoMem(void);*#pragma once class OutOfBoundspublic:OutOfBounds(void)OutOfBounds(void);*/maze.cpp:定义控制台应用程序的入口点。/#includestdafx.h#include iostream#includeStack.h#includePosition.husing namespace std;int*maze,m,n;/m行n列的迷宫Stack Position*path;void InputMaze()coutPlease input the number of row and col;cin mn;/maze=new intm+1n+1;maze=new int*m+2;maze0=new intn+2;mazem+1=new intn+2;for(int k=1;k=m;k+)mazek=new intn+2;coutinput thekth row:;/cin.getline(mazek,n);for(int i=1;i=n;i+)cin mazeki;cout endl;bool FindPath()path=new Stack Position(m*n-1);Position offset4;offset0.row=0;offset0.col=1;offset1.row=1;offset1.col=0;offset2.row=0;offset2.col=-1;offset3.row=-1;offset3.col=0;/maze0=new int*n+2;/mazem+1=new int*n+2;/initialize wall of obstacles around maze for(int a=0;a=m+1;a+)mazea0=mazean+1=1;/left and right for(int j=0;j=n+1;j+)maze0j=mazem+1j=1;/top and bottom Position here;here.row=1;here.col=1;maze11=1;int option=0;int LastOption=3;/search for apath while(here.row!=m|here.col!=n)int r,c;while(option=LastOption)r=here.row+offsetoption.row;c=here.col+offsetoption.col;if(mazerc=0)break;option+;/was aneighbor found?if(option=LastOption)path-Add(here);here.row=r;here.col=c;mazerc=1;option=0;elseif(path-IsEmpty()return false;Position next;path-Delete(next);if(next.row=here.row)option=2+next.col-here.col;else option=3+next.row-here.row;here=next;return true;void OutputPath()in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 7.《雨和雪》教学设计 2024-2025学年青岛版五年级科学上册
- Unit2 Developing ideas Writing 教学设计-2020年秋高中英语外研版(2019)选择性必修二
- 第3节 元素性质及其变化规律教学设计-2025-2026学年高中化学鲁科版2019选择性必修2 物质结构与性质-鲁科版2019
- 第二章 第一节 钠及其化合物-碳酸钠和碳酸氢钠(教学设计) 2023-2024学年高一上学期化学人教版(2019)必修第一册
- (正式版)DB1502∕T 020-2024 《机关事业单位日常运营林草碳汇碳中和技术导则》
- 2025合伙组建公司合同模板
- 2024年乐器、乐器辅助用品及零件投资申请报告代可行性研究报告
- 二年级信息技术上册 第5课 我的儿歌集-插入艺术字 2说课稿 河大版
- 桥面铺装专项施工组织设计-
- 2025合法借贷合同示范文本
- 三人茶楼合伙合同范本
- T/CCS 026-2023煤矿防爆锂电池车辆动力电源换电安全技术要求
- 住宿外出免责协议书
- 《法国美食文化课件》
- DLT 5035-2016 发电厂供暖通风与空气调节设计规范
- 新药研究与开发技术 课件2.新药的发现研究
- 销售合规风险管理制度
- 盾构施工安全管理
- 职场动物进化手册
- 2025中国农业银行贷款合同
- 青少年脊柱侧弯预防
评论
0/150
提交评论