Рекурсивный алгоритм для выражений Postfix / Infix - PullRequest
0 голосов
/ 26 сентября 2018

Итак, я сделал метод, используя для этого стеки и списки, но мне нужно сделать это, используя рекурсивный метод для круглых скобок, который переписывает содержимое внутри них в постфикс и возвращает проанализированное выражение, переписывая содержимое в исходное выражение:

(5 + (3 * 2)+2)-1            original expression

(5 + (3 * 2)+2)              first pair of parentheses

     (3 * 2)                 second pair of parentheses

        32*                  parsed expression to postfix

   (5 + 32*+2)               first pair of parentheses with replaced content

     532*+2+                 original expression parsed

Я подумал, можно ли мне отправить оригинальное выражение в список и использовать индексы, чтобы взять содержимое скобок, чтобы переписать их, но я понятия не имею, как заменить старый контент напроанализированный:

public static void Parse(String infijo) {
    IterableQueueListas<String> entranceList = new IterableQueueListas<>();
    IterableQueueListas<String> exitList = new IterableQueueListas<>();
    IterableStacksListas<String> stack = new IterableStacksListas<>();

    String infix="";

    String separate[] = infix.split("(?<=[-+*/%()])|(?=[-+*/%()])");

    System.out.println(Arrays.toString(separada));
    ArrayList<String> separateArray = new ArrayList<String>(Arrays.asList(separate));

    if (separateArray.contains("(")) {

        int fristposition = separateArray.indexOf("(");
        int finalposition = separateArray.lastIndexOf(")");

        int f = finalposition;
        int z = fristposition + 1;



        List<String> recursiv = separateArray.subList(z, f);


        StringBuilder sb = new StringBuilder();
        for (String s : recursiv) {
            sb.append(s);
        }

        String subExpression = sb.toString();

        System.out.println(subExpression);


        separateArray.remove(f);
        separateArray.remove(z - 1);


        Parse(subExpression);

По сути, я хочу заменить проанализированное выражение в круглых скобках для старого выражения, используя ArrayList.

Если у кого-то есть предложения или идеи, я действительноценить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...