算法与数据结构课程设计表达式求解问题(4)
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




