堆栈实现,计算后缀表达式
来源:互联网 发布:淘宝店标的网站 编辑:程序博客网 时间:2024/05/29 14:48
/*compute sufix expression*/#include <stdio.h>#include "stack.h"#include <string.h>#include <assert.h>#include <ctype.h>#define TRUE1#define FASLE0double add( double op1, double op2 );double sub( double op1, double op2 );double mul( double op1, double op2 );double div( double op1, double op2 );static char operator_group[] = "+-*/";static double (*op[4])( double , double ) = {add, sub, mul, div};int is_operator( char ch );static char whitespace[] = " \t\f\v\n\r";#define MAX_LEN100int main(){doublecmp_temp1, cmp_temp2, cmp_result;doubleulti_result;char*token;charbuffer[MAX_LEN];printf("Please input the expression\n");while( fgets( buffer, MAX_LEN, stdin ) != NULL ){for( token = strtok( buffer, whitespace);token != NULL;token = strtok( NULL, whitespace ) ){if( is_operator( *token ) && *(token + 1) == '\0' ){cmp_temp2 = top();pop();cmp_temp1 = top();pop();switch( *token ){case '+':cmp_result = op[0]( cmp_temp1, cmp_temp2 );break;case '-':cmp_result = op[1]( cmp_temp1, cmp_temp2 );break;case '*':cmp_result = op[2]( cmp_temp1, cmp_temp2 );break;case '/':cmp_result = op[3]( cmp_temp1, cmp_temp2 );break;}push( cmp_result );}else {floatf_value;sscanf(token ,"%f", &f_value );push( f_value );}}}/*打印结果*/ulti_result = top();pop();//堆栈应该为空;assert(is_empty())printf("the result of the expression is %f", ulti_result );return 0;}int is_operator( char ch ){char*ptr = &ch;if( strpbrk( ptr, operator_group ) == NULL )return FASLE;return TRUE;}double add( double op1, double op2 ){return op1 + op2;}double sub( double op1, double op2 ){return op1 - op2;}double mul( double op1, double op2 ){return op1 * op2;}double div( double op1, double op2 ){if( op2 == 0 ){printf( "除数不能为0" );return FASLE;}return op1 / op2;}
计算后缀表达式;
可以计算浮点数,负数,没有添加其他的运算符,只有+-*/
- 堆栈实现,计算后缀表达式
- 使用堆栈计算后缀表达式--java实现
- 关于用堆栈实现中后缀表达式计算的问题
- 堆栈实现中缀表达式转后缀表达式及计算表达式的值
- 利用堆栈实现后缀表达式求值
- 表达式计算,输出后缀表达式,栈实现
- 链式堆栈---实现中缀表达式转后缀表达式
- 中缀表达式转换为后缀表达式--堆栈实现
- VB利用堆栈实现表达式计算
- 栈实现后缀表达式的计算
- 后缀表达式计算的代码实现
- java堆栈获取后缀表达式
- java堆栈获取后缀表达式
- JAVA实现中缀表达式转换为后缀表达式并计算
- java实现中缀表达式转后缀表达式并且计算
- Java实现中缀表达式转后缀表达式并计算结果
- 计算表达式 --堆栈
- 堆栈应用:表达式计算
- 使用outline固定执行计划
- 简单的动画
- jquery操作cookie
- TinyXML读取XML文件内容 [大三四八九月实习]
- quartz.net中添加引用dll的job实现方法
- 堆栈实现,计算后缀表达式
- 数据挖掘著名学者的网站
- Java中重载(overload)和重写(override)的区别
- mac os debug
- Make project in test flight
- const修饰符基础
- mysql导入sql问题:server has gone away
- ExtJS中更新html内容以及iframe中内容打印
- 将url分割,并判断每一部分是否符合一定的逻辑