教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

算法与数据结构课程设计表达式求解问题(4)

来源:网络收集 时间:2026-07-26
导读: if(!f->base) exit (0); f->top=f->base+f->stacksize; f->stacksize+=stackincrement; } *(f->top)=e;f->top++; } int f_pop(f_stack *f,char *e) { if(f->base==f->top) { return FALSE; } *e=*(--f->top); retur

if(!f->base) exit (0);

f->top=f->base+f->stacksize; f->stacksize+=stackincrement; }

*(f->top)=e;f->top++; }

int f_pop(f_stack *f,char *e) {

if(f->base==f->top) {

return FALSE; }

*e=*(--f->top); return OK; }

int s_pop(s_stack *s,int *e)/*操作数出栈*/ {

if(s->top==s->base) {

return FALSE; }

*e=*(--s->top); return OK; }

int s_gettop(s_stack *s) {

return *(s->top-1); }

char f_gettop(f_stack *f) {

return *(f->top-1); }

char Precede(char theta1,char theta2)/*比较运算符优先级*/ {

return OP[in(theta1)-1][in(theta2)-1]; }

int operate(int p,char op,int q) /*计算*/ {

switch(op) {

case '+': return q+p; case '-': return q-p; case '*': return q*p; case '/': return q/p;

16

} }

int EvaluateExpression(s_stack *OPND,f_stack *OPTR) {

char c,op,x; int a,b;

s_initial(OPND);f_initial(OPTR); f_push(OPTR,'#'); c=getchar();

while(c!='#' ||f_gettop(OPTR)!='#') {

if(!in(c)) /*为操作数*/ {

s_push(OPND,c-'0'); c=getchar(); } else {

switch(Precede(f_gettop(OPTR),c)) {

case '<':

f_push(OPTR,c);c=getchar(); break; case '=':

f_pop(OPTR,&op); c=getchar(); break; case '>':

s_pop(OPND,&a); s_pop(OPND,&b); f_pop(OPTR,&op);

s_push(OPND,operate(a,op,b));/*没有检查除0的错误*/ break; } } }

return s_gettop(OPND); }

int main() {

s_stack s; f_stack f;

printf(\}

17

五 设计总结

这是一门纯属于设计的科目,它需用把理论变为上机调试。在学习科目的第一节课

起,李老师就为我们阐述了它的重要性。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。

刚开始学的时候确实有很多地方我很不理解,每次上课时老师都会给我们出不同的设计题目,对于我们一个初学者来说,无疑是一个具大的挑战,撞了几次壁之后,我决定静下心来,仔细去写程序。老师会给我们需要编程的内容一些讲解,顺着老师的思路,来完成自己的设计,我们可以开始运行自己的程序,可是好多处的错误让人看的可怕,还看不出到底是哪里出现了错误,但是程序还是得继续下去,我多次请教了老师和同学,逐渐能自己找出错误,并加以改正。TC里检查错误都是用英文来显示出来的,经过了这次课程设计,现在已经可以了解很多错误在英文里的提示,这对我来说是一个突破性的进步,眼看着一个个错误通过自己的努力在我眼前消失,觉得很是开心。此次的程序设计能够成功,是我和我的同学三个人共同努力作用的结果。在这一段努力学习的过程中,我们的编程设计有了明显的提高。

其实现在想起来,收获还真是不少,虽然说以前非常不懂这门语言,在它上面花费了好多心血,觉得它很难,是需用花费了大量的时间编写出来的。现在真正的明白了一些代码的应用,每个程序都有一些共同点,通用的结构,相似的格式。只要努力去学习,就会灵活的去应用它。栈,队列和数组

都属于线性结构的拓展,栈和队列是操作受限的线性表,数组是数据元素是非原子类型的线性表。大家在复习这一章的时候一定要注意对栈和队列的灵活运用,数组这一张要注意特殊矩阵压缩方面的题目。

栈、队列的定义及其相关数据结构的概念,包括:顺序栈,链栈,共享栈,循环队列,链队等 识记

栈与队列插入删除操作的特点,栈和队列的特点 理解

递归算法,栈和递归的关系,把递归算法转换为用栈来实现的非递归算法 掌握 栈的应用 了解

栈和队列各种实现方式的运算 理解

循环队列中判队空、队满条件,循环队列中入队与出队算法 掌握 判循环队列是空还是满的两种处理方法 理解 数组的定义以及如何理解它们是线性表的扩展 识记 数组除了初始化和销毁之外只能进行存取和修改操作 识记

多维数组中某数组元素的position求解(不管是按行存储和按列存储):一般是给出数组元素的首元素地址和每个元素占用的地址空间并组给出多维数组的维数,然后要求你求出该数组中的某个元素所在的位置

六 参考文献

18

1. 严蔚敏,吴伟民, 《数据结构(C语言版)》,北京:清华大学出版

社,2005

2. 严蔚敏,吴伟民, 《数据结构题集(C语言版)》,北京:清华大学

出版社,2003

3. 杨旭 《C语言程序设计 案例教程》 人民邮电出版社 2005 4. 谭浩强,《C语言程序设计》,北京:清华大学出版社,2005

19

…… 此处隐藏:597字,全部文档内容请下载后查看。喜欢就下载吧 ……
算法与数据结构课程设计表达式求解问题(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/443095.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)