精华内容
下载资源
问答
  • 后缀算式
    千次阅读
    2015-08-20 16:14:00

    .转换方法

     

     

    中缀算式(3+4X)-2Y/3对应的后缀算式  3 4 X * + 2 Y * 3 / -  乘号也应算进去

    转载于:https://www.cnblogs.com/fthjane/p/4745532.html

    更多相关内容
  • 前缀式子:- + 1 × + 2 3 4 5用前缀算出的结果为:16 ========================================================================= 后缀式子:1 2 3 + 4 × + 5 - 后缀:1、从左至右扫描表达式。 2、遇到数字时,...

    前缀式子:- + 1 × + 2 3 4 5

    前缀:1、从右至左扫描表达式。
               2、遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈。
              3、重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。

    前缀式子:- + 1 × + 2 3 4 5用前缀算出的结果为:16

    =========================================================================

    后缀式子:1 2 3 + 4 × + 5 -

    后缀:1、从左至右扫描表达式。
               2、遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(次顶元素op 栈顶元素 ),并将结果入栈。
               3、重复上述过程直到表达式最右端,最后运算得出的值即为表达式的结果。

    后缀式子:1 2 3 + 4 × + 5 -用后缀算出的结果为:16

    展开全文
  • 后缀算式9 2 3±10 2/-的值为A A -1 B 0 C 1 D 2 表达式(3+4* X )-2* Y /3对应的后缀算式为A A 3 4 X * + 2 Y * 3 / - B 3 4 X * 2 + Y * 3 / - C 3 4 * X 2 + Y * 3 / - D 3 4 X * 2 Y + * 3 / -

    后缀算式9 2 3±10 2/-的值为A
    A -1
    B 0
    C 1
    D 2
    表达式(3+4* X )-2* Y /3对应的后缀算式为A
    A 3 4 X * + 2 Y * 3 / -
    B 3 4 X * 2 + Y * 3 / -
    C 3 4 * X 2 + Y * 3 / -
    D 3 4 X * 2 Y + * 3 / -

    展开全文
  • 后缀算式9 2 3 +- 10 2 / -的值为__________。中缀算式(3+4X)-2Y/3对应的后缀算式 为_______________________________。
  • 中缀算式转后缀算式

    千次阅读 2014-10-30 11:15:17
    #include #include #include #ifndef _Stack_h struct StackRecord; typedef struct StackRecord *Stack; int IsEmpty(Stack s); int IsFull(Stack s);...Stack CreateStack(int MaxElements);...void DisposeStack(St
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #ifndef _Stack_h
    
    struct StackRecord;
    typedef struct StackRecord *Stack;
    
    int IsEmpty(Stack s);
    int IsFull(Stack s);
    Stack CreateStack(int MaxElements);
    void DisposeStack(Stack s);
    void MakeEmpty(Stack s);
    void Push(int x,Stack s);
    int Top(Stack s);
    void Pop(Stack s);
    int TopAndPop(Stack s);
    #endif 
    //head is dummy
    
    #define EmptyTOS -1
    #define MinStackSize 5
    
    struct StackRecord{
    	int capacity;
    	int topofstack;
    	int *a;
    }; 
    
    int IsEmpty(Stack s){
    	return s->topofstack == EmptyTOS;
    }
    
    int IsFull(Stack s){
    	return s->topofstack == s->capacity -1;
    }
    
    Stack CreateStack(int MaxElements){
    Stack s;/*
    if(MaxElements<MinStackSize){
    	printf("Stack size is too small\n");
    	return 0;
    }	
    */
    s = (Stack)malloc(sizeof(struct StackRecord));
    if(s == NULL){
    	printf("Out of Space!\n");
    	return 0;
    }
    s->a = (int *)malloc(sizeof(int)*MaxElements);
    if(s->a == NULL){
    	printf("Out of Space\n");
    	return 0;
    }
    s->capacity = MaxElements;
    MakeEmpty(s);
    return s;
    }
    
    void DisposeStack(Stack s){
    	if(s!= NULL){
    		free(s->a);
    		free(s);
    	}
    }
    
    void MakeEmpty(Stack s){
    	s->topofstack = EmptyTOS;
    }
    
    void Push(int x,Stack s){
    	if(IsFull(s))
    		printf("Stack is Full\n");
    	s->a[++s->topofstack] = x;
    }
    
    int Top(Stack s){
    	if(!IsEmpty(s))
    		return s->a[s->topofstack];
    	printf("Stack is Empty\n");
    	return 0;
    }
    
    void Pop(Stack s){
    	if(IsEmpty(s))
    		printf("Stack is Empty\n");
    	else s->topofstack--;
    }
    
    int TopAndPop(Stack s){
    	if(!IsEmpty(s))
    		return s->a[s->topofstack--];
    	printf("Stack is Empty\n");
    	return 0;
    }
    int compare(char a,char b){
    	if((a == '+'||a == '-')&&(b == '*'||b == '/'))
    		return -1;
    	else if((a == '*'||a == '/')&&(b == '+'||b == '-'))
    		return 1;
    	else if((a == '*'||a == '/')&&(b == '*'||b == '/'))
    		return 0;
    	else if((a == '+'||a == '-')&&(b == '+'||b == '-'))
    		return 0;
    	else if(b == ')'&&a !='(')
    		return 1;
    	else if(a == '(')
    		return -1;
    }
    char *InfixToPostfix(char *express){
    	int len,i,j;
    	char postfix[50],ch;
    	Stack s;
    	len = strlen(express);
    	s = CreateStack(len);
    	for(i = 0,j;i<len;i++){
    		if(express[i]>='0'&&express[i]<='9'||express[i] == '.'){
    			postfix[j++] = express[i];
    			if((express[i+1]<'0' ||express[i+1]>'9')&&express[i+1]!='.')
    			postfix[j++] = ' ';
    		}
    		else {
    			if(express[i] == '+'&&express[i-1]!=')'&&(i == 0||express[i-1]<'0'||express[i-1]>'9'))
    			continue;
    			if(express[i] == '-'&&express[i-1]!=')'&&(i == 0||express[i-1]<'0'||express[i-1]>'9')){
    			postfix[j++] = express[i];
    		    continue;
    			}
    			if(express[i] == '('||IsEmpty(s))
    				Push(express[i],s);
    			/* else if(express[i] == ')'){
    				while(!IsEmpty(s)&&ch = top(s)&&ch!='('){
    					postfix[j++] = ch;
    					postfix[j++] = ' ';
    					pop(s);
    				}
    				pop(s);
    			}*/
    			else 
    			{
    				while(!IsEmpty(s)&&(ch =Top(s))!='\0'&&compare(ch,express[i])>=0){
    					Pop(s);
    					postfix[j++] = ch;
    					postfix[j++] = ' ';
    				}
    				if(ch == '('&&express[i] == ')')
    					Pop(s);
    				else
    					Push(express[i],s);
    			}
    		}
    	}
    	while(!IsEmpty(s)){
    		ch = Top(s);
    		postfix[j++] = ch;
    		postfix[j++] = ' ';
    		Pop(s);
    	}
    	if(postfix[j-1] == ' ')
    		postfix[j-1] = '\0';
    	else postfix[j] = '\0';
    	return postfix;
    }
    int main(){
    	char express[21];
    	char *postfix;
    	int i,j,n;
    	scanf("%s",express);
    	postfix = InfixToPostfix(express);
    	printf("%s",postfix);
    	return 0;
    }

    展开全文
  • 1.通常从四个方面评价算法的质量:_ 准确性__、___高效性______、__易读性__和_____健壮性____。...4.后缀算式9 2 3 +- 10 2 / -的值为___-1___。中缀算式(3+4X)-2Y/3对应的后缀算式为_34X*+2Y*3/-_。
  • 优雅计算算式后缀表达式

    千次阅读 多人点赞 2020-11-24 12:44:57
    后缀表达式 提要 当用户输入了如同"10 - 2"这样的字符串,如何计算这个算式的算术结果? 答案似乎非常简单:遇到数字就缓存数字,遇到运算符,用缓存的数字对下一个数字进行操作就能得到结果。 对于"10 - 2 + 5"这样...
  • 后缀表达式计算简单算式

    千次阅读 2020-12-10 17:50:05
    输入一个简单的算式字符串,使用后缀表达式算法计算其结果。例如如下字符串及对应结果: "3+2-6" 结果为-1 "5*6/3"结果为10 "6*(7+3)"结果为60 "1*4+6*7"结果为46 "(4+6)*(2-6)"结果为-40 步骤大致为:读取算式...
  • 中缀后缀表达式

    2018-02-23 16:40:12
    包含中缀转后缀以及后缀表达式计算(或中缀记法)是一个通用的算术或逻辑公式表示方法, 操作符是以中缀形式处于操作数的中间(例:3 + 4),中缀表达式是人们常用的算术表示方法。 与前缀表达式(例:+ 3 4)或后缀...
  • printf("请输入一个后缀算术式:\n"); gets(k); s=(seqstack*)malloc(sizeof(seqstack)); setnull(s); while(k[i]!='\0') { if(k[i]>='0'&&k[i]) { enter(s,k[i],i); i++; } else { if(k[i]=='+') { x1=pop(s); x2=...
  • 将由数字和四则运算符组成的后缀表达式变换为中缀表达式。输入的后缀表达式包含的运算符不超过15个。要求转换后的中缀表达式中不应出现不必要的括号。例如,整个表达式两端的括号要省略,不影响原计算顺序的括号要...
  • 后缀表达式的计算 后缀表达式: 指的是不包含括号,运算符放在两个运算对象的后面,所有的计算按运算符出现的顺序,严格从左向右进行。(不再考虑运算符的优先规则)。 中缀表达式: 也就是我们日常最容易见到...
  • 数据结构错题整理

    2021-11-18 15:21:58
    中缀算式(3+4X)-2Y/3对应的后缀算式为________________。 向一棵B-树插入元素的过程中,若最终引起树根结点的分裂,则新树比原树的高度___________。 在堆排序的过程中,对任一分支结点进行筛运算的时间复杂度为__...
  • 详解如何将中缀表达式转化为后缀表达式_Dacyuan的学习笔记-CSDN博客_中缀算式怎么转化为后缀算式https://blog.csdn.net/Coder_Dacyuan/article/details/79941743​​​​​​​中缀表达式转换为后缀表达式___七把刀_...
  • 数据结构期末复习小总结

    千次阅读 2020-06-30 18:20:07
    例题:后缀算式923+-102/-的值是多少, 有向图和无向图的例题: 哈希表求平均长度 二叉平衡树的构造 哈夫曼编码 八大内部排序的过程及总结 最小生成树(Kruskal,Prime)及最短路(Floyd,Dijkstra)总结 ...
  • 完整的表达式数据结构课程设计报告,包含表达式转换为后缀表达式,以及表达式计算。。
  • 后缀表达式及其计算方法

    千次阅读 多人点赞 2020-04-02 23:13:02
    1.中缀表达式转后缀表达式 在计算普通的四则运算时,比如 1+(2+3*4-5)+6 该表达式即为中缀表达式,但对于计算机来说采用中缀表达式计算并不友好。所以需要将中缀表达式转换为对于计算机而言更容易计算的后缀表达式。...
  • 后缀表达式求值

    2019-09-26 14:44:54
    下面是把输入的表达式转成后缀表达式,输入3-5*2则转成352*- char sExpression[ 100 ], temp[ 20 ], opr[ 20 ]; int i, j, isNum; Stack *stack_opr = NULL; // 用来存运算符 Queue *queue_exp = NULL;...
  • 后缀表达式计算器

    2013-07-22 11:45:25
    课程设计题目实现一个简单的后缀表达式计算器。假定表达式里的基本数值为实数,可用的运算符包括+,-,*,/,^,其中的 ^ 表示求幂运算。
  • 中缀算式(3+4X)-2Y/3对应的后缀算式为_______________________________。 5.若用链表存储一棵二叉树时,每个结点除数据域外,还有指向左孩子和右孩子的两个指针。在这种存储结构中,n个结点的二叉树共有________个...
  • 后缀算法与中缀算法

    2020-08-04 14:59:24
    相比较中缀表达式的结构,不难推出后缀表达式的格式,就是符号位于两个运算量的后边位置,比如ab+表示的就是a+b;后缀表达式又称逆波兰表达式; 优点在于:可以配合栈(stack)来完成运算,这种运算只需要按顺序进行而...
  • 后缀表达式计算

    2022-01-12 15:01:52
    后缀表达式计算
  • 前缀表达式的计算方法和后缀表达式类似,只是变成了从右往左扫描 中缀表达式 运算符在中间,运算时需要考虑运算符优先级 1+2*3-5 要先算2*3.... 后缀表达式 运算符在数字的后面,运算时不考虑优先级,只需要...
  • C语言后缀式建二叉树
  • 用这种表示法写成的算式后缀表达式,对于计算机来说很容易就能用一个栈对其进行计算。 后缀表达式的计算方法: 遍历一边算式,如果遇到变量就压进栈,如果遇到运算符就取出栈顶相应数量的变量进行计算,然后再把...
  • 20世纪50年代,波兰逻辑学家Jan·ukasiewicz,想到了不需要判断顺序的数学表达式,这就是后缀表达式(也称之为逆波兰表达式) 2.图解后缀表达式计算方式 规则:遍历后缀表达式的每个元素, 1.遇到数字就进栈, 2....
  • 此为相当实用的crc算式生成工具(gencrc)的更新版,并附源代码 http://download.csdn.net/detail/zhangguo1286/874089 gencrc.c 为源代码, gencrc.exe为源代码经VC编译后生成的可执行程序,可在windows ms-dos下...
  • 10_中缀转后缀计算器(附完整java代码) 一、逆波兰计算器 1.1 案例引入 ​ 输入一个逆波兰表达式(后缀表达式),使用栈(Stack),计算其结果。(只支持对整数的计算即可) 后缀表达式的计算机求值: ​ 从左至右扫描...
  • 中缀与后缀表达式详解

    千次阅读 2019-12-06 19:45:36
    中缀表达式,就是我们日常适用的算式,主要是运算符的优先级和括号会改变优先级。我们人用中缀表达式是很方便的,但是计算机算很不方便,所以就有了后缀表达式。 2.原理与代码 比如这样一个后缀表达式:ABCD-*+ ,...
  • 使用栈对数据进行存放 读取到操作符时取栈顶的两位数进行计算 其中数据包括负数,小数等 (P.S.自己写的代码,不具有参考性,但是能跑就行,求轻喷) #include<iostream>... ~Stack(){

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,917
精华内容 1,166
关键字:

后缀算式

友情链接: LIGHTandCAMERA.rar