- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二 课程设计 2——算术表达式求值
一、需求分析
二、程序的主要功能
三、程序运行平台
四、数据结构
五、算法及时间复杂度
六、测试用例
七、程序源代码
三 感想体会与总结
算术表达式求值
一、需求分析
一个算术表达式是由操作数 (operand) 、运算符 (operator) 和界限符 (delimiter) 组成的。假设操作数是正整数,运算符只含加减乘除等四种
运算符,界限符有左右括号和表达式起始、结束符“ #”,如: #(7+15)
(23-28/4 )#。引入表达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。
二、程序的主要功能
1) 从键盘读入一个合法的算术表达式,输出正确的结果。
2) 显示输入序列和栈的变化过程。
三、程序运行平台
Visual C++ 版本
四、 数据结构
本程序的数据结构为栈。
(1)运算符栈部分:
struct SqStack //
{
定义栈
char *base; //
char *top; //
int stacksize; //
栈底指针
栈顶指针
栈的长度
};
int InitStack (SqStack s) //
建立一个空栈
S
{
if (! = (char *)malloc(50 * sizeof(char))))
exit(0);
=;
=50;
return OK;
}
char GetTop(SqStack s,char e) // {
运算符取栈顶元素
if ==
//
栈为空的时候返回
ERROR
{
printf( 运算符栈为空 return ERROR;
!\n);
}
else
e=*; //
栈不为空的时候用
e 做返回值,返回
S 的栈顶元素,并返回
OK
return OK;
}
int Push(SqStack s,char e) // {
运算符入栈
if =
{
printf(
运算符栈满
!\n);
=(char*)realloc ,+5)*sizeof(char) ); //
栈满的时候,追加
5 个存储空间
if(! exit (OVERFLOW);
=+;
+=5;
}
*++=e; //
return OK;
把 e 入栈
}
int Pop(SqStack s,char e) //
{
if == //
栈为空栈的时候,返回
ERROR
{
printf(
运算符栈为空
!\n);
return ERROR;
}
else
{
e=*; // 栈不为空的时候用 e 做返回值,删除 S 的栈顶元素,并返回 OK return OK;
}
}
int StackTraverse(SqStack s) // 运算符栈的遍历
{
char *t;
t= ;
if ==
{
printf( 运算符栈为空 !\n); // 栈为空栈的时候返回 ERROR
return ERROR;
}
while(t!=
{
printf( %c,*t); // 栈不为空的时候依次取出栈内元素
t++;
}
return ERROR;
}
(2)数字栈部分:
struct SqStackn // 定义数栈
{
int *base; // 栈底指针
int *top; // 栈顶指针
int stacksize; // 栈的长度
};
int InitStackn (SqStackn s) // 建立一个空栈 S
{
=(int*)malloc(50*sizeof(int));
if(!exit(OVERFLOW); // 存储分配失败
=;
=50;
return OK;
}
int GetTopn(SqStackn s,int e) // 数栈取栈顶元素
{
if ==
{
printf( 运算数栈为空
!\n); //
栈为空的时候返回
ERROR
return ERROR;
}
else
e=*; // 栈不为空的时候,用 e 作返回值,返回 S 的栈顶元素,并返回 OK return OK;
}
int Pushn(SqStackn s,int e) // {
数栈入栈
if =
{
printf(
运算数栈满
!\n); //
栈满的时候,追加
5 个存储空间
=(int*)realloc ,+5)*sizeof(int) );
if(! exit (OVERFLOW);
=+; // 插入元素 e 为新的栈顶元素
+=5;
}
*++=e; //
return OK;
栈顶指针变化
}
int Popn(SqStackn s,int e) // {
数栈出栈
if ==
{
printf(
您可能关注的文档
- 商标授权证明书.docx
- 四川省眉山市中考历史试题.docx
- 四年级运算律单元测试题.docx
- 四边形中旋转、折叠问题.docx
- 国际货物买卖法习题.docx
- 圆周运动的实例及临界问题.docx
- 圆柱与圆锥单元检测.docx
- 圆柱的体积导学单.docx
- 圆锥曲线八种解题方法、七种常规题型.docx
- 塑料模具设计题库.docx
- 2024届吉林省延边重点中学中考数学最后冲刺浓缩精华卷含解析.doc
- 2024届吉林省长春市绿园区重点中学中考冲刺卷生物试题含解析.doc
- 2024届吉林省海门市重点名校中考生物模试卷含解析.doc
- 2024届吉林省(省命题)重点达标名校中考数学押题卷含解析.doc
- 2024届吉林省白城市名校中考生物最后冲刺浓缩精华卷含解析.doc
- 2024届吉林省(省命题)重点达标名校中考联考生物试卷含解析.doc
- 2024届吉林省白城地区大安县中考猜题生物试卷含解析.doc
- 2024届吉林省长春净月高新技术产业开发区培元校中考生物四模试卷含解析.doc
- 2024届吉林省长春市外国语校中考生物模试卷含解析.doc
- 2024届嘉兴市秀洲区重点达标名校中考数学全真模拟试题含解析.doc
文档评论(0)