2013-09-25 3 views
0

Я пытаюсь написать программу Java, которая принимает арифметическое выражение, преобразует его из Infix в Postfix и оценивает ответ. Однако мне нужно представить выражения как полиномы с помощью связанных списков и выполнить оценку Postfix. Я завершил преобразование Infix to Postfix и знаю, как оценивать Postfix. Но я изо всех сил пытаюсь представить выражение полинома, используя Linked List.Решить уравнение многочлена с помощью связанного списка

Например, если выражение Postfix является: 40 50 -

Мне нужно хранить в 4 * 10^1 + 0 * 10^1 в связанном списке. Это можно сделать, если в объединенном списке есть 2 узла, коэффициент и экспонента. То же самое для 50.

Проблема в том, что я не знаю, сколько связанных списков мне понадобится для любого данного выражения. Если выражение postfix равно 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

Смежные вопросы