2013-09-25 37 views
0

我正在尝试编写一个接受算术表达式的Java程序,将其从Infix转换为Postfix并评估答案。但是,我需要借助链接列表将表达式表示为Polynomials,并对它们执行Postfix评估。我已经完成了Infix到Postfix的转换,并知道如何评估Postfix。但我正在努力使用链表来表示多项式表达式。使用链接列表求解多项式方程

例如,如果后缀表达式是:40 50 -

我需要存储为4 * 10^1 + 0 * 10^1在一个链表。它可以通过在链接列表中有2个节点,系数和指数来完成。同样的事情为50.

问题是,我不知道有多少链表我需要任何给定的表达式。如果后缀表达式是40 50 60 - +那么我需要将所有3个数字存储在单独的列表中,并将它们存储在堆栈中,直到找到运算符为止。任何人都可以给我任何关于如何进行的建议吗?

+0

你确定你打算把一个单独的号码分割成链表(不仅仅是整个表达式)吗?这是非常直观和低效的。 – Dukeling

+0

[二元表达式树](http://en.wikipedia.org/wiki/Binary_expression_tree)怎么样? –

+0

当你写多项式时,你真的是指[多项式](http://en.wikipedia.org/wiki/Polynomial)还是你的意思是别的? – Joni

回答

1

您不需要将指数存储在链表中:指数可以由数字的位置给出。例如,365可以作为列表5->6->3存储,尽管每个列表节点存储单个数字并不那么有效。

您将需要尽可能多的链接列表,因为有输入数字,并且在阅读表达式之前,您将不知道会有多少链接?

+0

谢谢,但我如何创建这些许多链表?一个循环?我不知道如何继续。 – usb

+0

我不确定我是否理解这个问题。每次在阅读输入时找到一个数字,都可以创建一个链表。 – Joni

+0

输入可能有几个表达式。所有表达式可以有不同数量的数字。我每次找到一个数字时如何创建一个新的链表?每个链接列表都应该有不同的名字?对不起,我是一个新手。 – usb