数据结构算术表达式求值.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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(

文档评论(0)

150****0902 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档