逆波兰计算器的C完整C代码(输入须为后缀表达式)
来源:互联网 发布:化妆刷 知乎 编辑:程序博客网 时间:2024/05/09 02:14
/* 逆波兰计算器 */#include<stdio.h>#include<stdlib.h>#include<string.h>#include<ctype.h>typedef double Elemtype;typedef struct StackNode {Elemtype data;struct StackNode *next;}StackNode, *pStackNode;typedef struct LinkStack {pStackNode top;int count;}LinkStack, *pLinkStack;//链栈创建和初始化pLinkStack InitStack ( void ){pLinkStack s = (pLinkStack)malloc(sizeof(LinkStack));s -> top = NULL;s -> count = 0;return s;}//链栈是否为空int StackEmpty( pLinkStack s ){return (s -> top == NULL ? 1 : 0 );}//链栈入栈void Push( pLinkStack s, Elemtype e ){pStackNode p = (pStackNode)malloc(sizeof(StackNode));p -> data = e;if( s -> top != NULL ) p -> next = s -> top;s -> top = p;s -> count++;}//链栈出栈Elemtype Pop( pLinkStack s ){Elemtype temp;pStackNode p;if( StackEmpty(s) )exit(0);temp = s -> top -> data;p = s -> top;s->top = s->top->next;free(p);s->count--;return temp;}int main(){char c;Elemtype temp1, temp2;char str[20];int i=0;pLinkStack s = InitStack();printf("请输入表达式 :\n");scanf("%c", &c);while( c != '\n' ) {while( isdigit(c) || c=='.' ) {//过滤数字str[i++] = c;str[i] = '\0';if( i>=20 )printf("出错: 输入的数据过大!\n");scanf("%c", &c);if( c == ' ' ) {Push( s, atof(str));i = 0;break;}}switch( c ) {case '+':temp1 = Pop( s ) ;temp2 = Pop( s ) ;Push( s, temp2 + temp1 );break;case '-':temp1 = Pop( s ) ;temp2 = Pop( s ) ;Push( s, temp2 - temp1);break;case '*':temp1 = Pop( s ) ;temp2 = Pop( s ) ;Push( s, temp2 * temp1);break;case '/':temp1 = Pop( s ) ;temp2 = Pop( s ) ;Push( s, temp2 / temp1);break;default:break;}scanf("%c", &c);}printf("结果为: %f\n", Pop(s));return 0;}
0 0
- 逆波兰计算器的C完整C代码(输入须为后缀表达式)
- 栈的应用--中缀表达式转换为后缀表达式&逆波兰计算器的实现
- 逆波兰 计算器 C语言实现代码
- java 逆波兰表达式 (后缀表达式) 计算器
- C语言利用栈实现将中缀表达式转换为后缀表达式(即逆波兰式)
- 使用逆波兰式(后缀表达式)实现多功能计算器
- 逆波兰计算器(C语言)
- 逆波兰计算器(C语言)
- c语言 逆波兰式输入 计算器程序
- C 逆波兰表达式
- 表达式计算器(逆波兰法)栈操作(C语言实现)
- 中缀表达式转后缀表达式(逆波兰式)的C++代码
- 逆波兰计算器与中缀表达式向后缀表达式的转化实例
- 中缀表达式转换为逆波兰表达式(C++)
- [C++]求表达式的逆波兰式
- 将中缀表达是转换为后缀表达式(逆波兰式)的一般算法
- 逆波兰表达式(后缀表达式的求解)
- 实现逆波兰表达式(后缀表达式)的运算结果
- android中文API之Message
- 基于node的webSocket应用
- 在windows上安装部署SVN服务器
- python中from module import * 的一个坑
- 华为离职副总裁徐家骏:年薪千万的工作感悟
- 逆波兰计算器的C完整C代码(输入须为后缀表达式)
- Android 入门
- XSHELL使用小技巧
- Java JFrame实现全屏的四种方式
- iOS开发获取沙盒文件路径
- Dijkstra算法----单源最短路径的贪心算法Java具体代码实现
- 【iOS开发-79】利用Modal方式实现控制器之间的跳转
- nodejs 安装 socket.io
- 生成拉丁方阵的完整C代码