- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XXXXXX大学
《数据结构》课程设计汇报
班级:
学号:
姓名:
指导老师:
目 录
一 算术表示式求值
需求分析
程序关键功效
程序运行平台
数据结构
算法立即间复杂度
测试用例
程序源代码
二 感想体会和总结
算术表示式求值
一、需求分析
一个算术表示式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表示式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表示式起始、结束符是为了方便。编程利用“算符优先法”求算术表示式值。
二、程序关键功效
(1) 从键盘读入一个正当算术表示式,输出正确结果。
(2) 显示输入序列和栈改变过程。
三、程序运行平台
Visual C++ 6.0版本
四、数据结构
本程序数据结构为栈。
(1)运算符栈部分:
struct SqStack //定义栈
{
char *base; //栈底指针
char *top; //栈顶指针
int stacksize; //栈长度
};
int InitStack (SqStack s) //建立一个空栈S
{
if (!(s.base = (char *)malloc(50 * sizeof(char))))
exit(0);
s.top=s.base;
s.stacksize=50;
return OK;
}
char GetTop(SqStack s,char e) //运算符取栈顶元素
{
if (s.top==s.base) //栈为空时候返回ERROR
{
printf(运算符栈为空!\n);
return ERROR;
}
else
e=*(s.top-1); //栈不为空时候用e做返回值,返回S栈顶元素,并返回OK
return OK;
}
int Push(SqStack s,char e) //运算符入栈
{
if (s.top-s.base = s.stacksize)
{
printf(运算符栈满!\n);
s.base=(char*)realloc (s.base,(s.stacksize+5)*sizeof(char) ); //栈满时候,追加5个存放空间
if(!s.base) exit (OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=5;
}
*(s.top)++=e; //把e入栈
return OK;
}
int Pop(SqStack s,char e) //运算符出栈
{
if (s.top==s.base) //栈为空栈时候,返回ERROR
{
printf(运算符栈为空!\n);
return ERROR;
}
else
{
e=*--s.top; //栈不为空时候用e做返回值,删除S栈顶元素,并返回OK
return OK;
}
}
int StackTraverse(SqStack s) //运算符栈遍历
{
char *t;
t=s.base ;
if (s.top==s.base)
{
printf(运算符栈为空!\n); //栈为空栈时候返回ERROR
return ERROR;
}
while(t!=s.top)
{
printf( %c,*t); //栈不为空时候依次取出栈内元素
t++;
}
return ERROR;
}
数字栈部分:
struct SqStackn //定义数栈
{
int *base; //栈底指针
int *top; //栈顶指针
int stacksize; //栈长度
};
int InitStackn (SqStackn s) //建立一个空栈S
{
s.base=(int*)malloc(50*sizeof(int));
if(!s.base)exit(OVERFLOW); //存放分配失败
s
您可能关注的文档
最近下载
- 四年级上册语文知识竞赛试卷及答案.pdf VIP
- 食材食品分拣区作业管理.docx VIP
- 李鲁-卫生事业管理(第二版)第17章医学科教管理.pptx VIP
- 李鲁-卫生事业管理(第二版)第16章中医药管理.pptx VIP
- 李鲁-卫生事业管理(第二版)第15章药品监督管理.pptx VIP
- 李鲁-卫生事业管理(第二版)第14章妇幼卫生管理.pptx VIP
- 李鲁-卫生事业管理(第二版)第12章公共卫生管理.pptx VIP
- 《国际贸易(第三版)》课后参考答案 李丹 崔日明.pdf VIP
- 李鲁-卫生事业管理(第二版)第11章医政管理.pptx VIP
- 李鲁-卫生事业管理(第二版)第9章卫生信息管理.pptx VIP
原创力文档


文档评论(0)