问:栈的应用举例:数制转换,表达式求值
- 答:关于表达式的分析与求值是计算机软件专业中“编译原理”课程极其重要的部分,主要用于最初的词法分析。其表示方式有:前缀、中缀、后缀表示法。其数据结构可以使用一个堆栈来表示。具体的实现代码,我以前使用的书籍是《C语言大全》,那上面就有完整的、现成的代码,可以供你参考运行。同时你还可以参考《编译原理》相关的教材。
但是由于我已经很久没有编写编译原理方面的程序了,况且编写并亲自调试通过该程序,难度还是比较大的。所以我也无法亲自给你编写一个完整表达式分析与求值的程序。只能够给你提供一些思路和线索。
另外,关于不同数制之间的转换问题,这个倒是不难解决,可以采用通常的算法就是短除法,然后将每一次的余数采取“倒排”即可。例如:将十进制的 15 转换为二进制。
2|15(1
--
2|7(1
-
2|3(1
-
2|1(1
-
则十进制的 15 为二进制的:1111。
问:数据结构编写用栈实现表达式求值程序代码 实验报告
- 答:设计一个程序,演示用算符优先法对算术表达式求值的过程。利用算符优先关系,实现对算术四则混合运算表达式的求值。
(1)输入的形式:表达式,例如2*(3+4)
包含的运算符只能有'+' 、'-' 、'*' 、'/' 、'('、 ')';
(2)输出的形式:运算结果,例如2*(3+4)=14;
(3)程序所能达到的功能:对表达式求值并输出
问:C语言用栈实现表达式求值
- 答:type sign(char ch1,char ch2)
{
int i,j;
char a[7][7]={
{'>','>','<','<','<','>','>'},
{'>','>','<','<','<','>','>'},
{'>','>','>','>','<','>','>'},
{'>','>','>','>','<','>','>'},
{'<','<','<','<','<','=',' '},
{'>','>','>','>',' ','>','>'},
{'<','<','<','<','<',' ','='}
};
i=alue(ch1);
j=alue(ch2);//调用函数两次,返回两个函数值
return a[i][j];
}
这个函数的返回问题吧, a[i][j]应该是这里的问题。
栈和队列的应用,我有写过魔王语言的,应该也是差不多的哈,在我空间:
自己看下哈~~基本操作差不多的~~