0

式a+b * cd / eを計算するには、中置から後置への変換アルゴリズムを実装する必要があります

また、キューを使用してこれを行う必要があります(2つの異なるキュースタックが必要だと思います)

DoubleLinkListを使用してキュークラスを作成しましたが、この問題のアルゴリズムを作成する必要があります。しかし、私はそれについてどうやって行くのかかなり迷っています。どんな助けでもいただければ幸いです!

これまでのところ(そして私はそれが非常に間違っていることを知っています)私は持っています:

string infix = "a+b*c-d/e";
    Queue *holder = new Queue();
    Queue *newstring = new Queue();
    int length = infix.length();
    char temp;
    char prev;
    for(int i=0; i<length; i++)
    {
        temp = infix[i];
        if((temp == '+') || (temp == '-') || (temp == '*') || (temp == '/'))
        {
            if (holder->isEmpty())
            {
                holder->queue(temp);
            }
            if(temp<holder.enqueue())
            {

            }
        }
        holder->queue(temp);

    }
4

2 に答える 2

2

これは宿題だと思いますので、自分でプログラミングの詳細を理解することが重要です。アルゴリズムの概要は次のとおりです。

Define a stack
Go through each character in the string
If it is between 0 to 9, append it to output string.
If it is left brace push to stack
If it is operator *+-/ then 
          If the stack is empty push it to the stack
          If the stack is not empty then start a loop:
                             If the top of the stack has higher precedence
                             Then pop and append to output string
                             Else break
                     Push to the stack

If it is right brace then
            While stack not empty and top not equal to left brace
            Pop from stack and append to output string
            Finally pop out the left brace.

If there is any input in the stack pop and append to the output string.
于 2013-03-14T17:36:24.677 に答える
0

演算子と値のツリーを作成する必要があると思います。
ツリーの走査順序に応じて、中置から後置、前置に変換できます。
インストラクターは、3 つの間で変換する課題を与えている場合があります。

ここにいくつかの記事があります:
テキサス大学
YouTube ビデオ
ウィキペディア - 式ツリー

于 2013-03-14T20:33:13.663 に答える