void stackShow::Post2In(QStringList &phrase) { static QStack <QString> stack; QString r,r1,r2; QString l[4]={"+" , "-" , "*" , "/" }; for (int i=0; i<phrase.size(); i++) for (int j=0 ; j<4 ; j++) { if (phrase.at(i)!=l[j] && j==3) { stack.push(phrase.at(i)); ui->lneRes->insert(phrase.at(i) + " "); phrase.removeFirst(); r = phrase.join(" "); ui->lneExp->setText(r); return; } else if ( phrase.at(i)==l[j] ) { if (stack.size()<2) return ; QStringList t = stack.toList(); t.removeLast(); t.removeLast(); r = t.join(" "); r1=stack.pop(); r2=stack.pop(); stack.push( "( " + r2 + " " + phrase.at(i) + " " + r1 + " ) "); ui->lneRes->setText( "( " + r2 + " " + phrase.at(i) + " " + r1 + " ) "); ui->lneStack->setText( r + " " "( " + r2 + " " + phrase.at(i) + " " + r1 + " ) "); phrase.removeFirst(); r = phrase.join(" "); ui->lneExp->setText(r); if (phrase.size()==0) stack.clear(); return; } } }