程序求助

程序求助

程序求助
每次读入一个整数表达式(只包含加法、乘法、括号和整数,也不考虑单目加)。先将表达式转化成树,树用递归方式表示,每个节点表示成引用形式:[op, node1, node2,node3...],op可以是+、*,node可以是整数或者另一个节点。用Data::Dumper显示树,再遍历树求表达式的值。

五一节就耗在这个程序上了,sigh,头都想爆了都没点头绪。
请达人指点!谢谢
自顶!--请大家给你提示.
自顶!
请大家给你提示吧
举个例子吧.
比如
相关图像上载:(JPG 格式, 13 K)


比如 12*5+55+(4*3+2)*(2+44*(5+1)) 的树表示如上。
遍历树后的计算结果为:3839




   

谢谢。基本实现功能了。不.
谢谢。基本实现功能了。不过有些地方结果不太符合题目要求,
你的结果: 要去的结果:
$VAR1 = [ $VAR1 = [
[ '+',
'12', [
'*', '*',
'5', '12',
'+', '5'
'55', ],
'+', '55',
[ [
'4', '*',
'*', [
'3', '+',
'+', [
'2' '*',
], '4',
'*', '3',
[ ],
'2', '2',
'+', ],
'44', [
'*', '+',
[ '2',
'5', [
'+', '*',
'1' '44',
] [
] '+',
] '5',
]; '1',
]
]
]
]
];
还有就是要求用递归建立树。
[color=red][/color][b][/b]
恩,比如 1+2+3应该表示:.
恩,比如 1+2+3应该表示:
[
‘+’,
'1',
'2',
'3'
];
1、2、3他们都是同等级的,所以前面的算式中有五个加号,但输出只有四个。
如果换成:1+(2+3),那就应该表示成:
[
‘+’,
'1',
[
'+',
'2',
'3'
]
];
括号改变了优先级,输出则有两个加号了。
对啊,还有括号.
sigh,又弄了1个小时,无果。苍天啊!~
[CCB]10[/CCB],我还是好好.
[CCB]10[/CCB],我还是好好学去吧