题目:带+-*/()的表达式计算。如:(1+2*3)-4;
思想:两个栈,一个用来存放数字,一个用来存放符号,然后比较各个符号优先级,遇到每个符号怎么解决等,考虑要全面。
栈的基本操作:
#ifndef _STACK_H_
#define _STACK_H_
template <typename T>
class myStack
{
public:
myStack(int maxSize = 100);
~myStack();
void Push(const T x);
void Pop();
T& getTop();
bool isEmpty();
private:
T *s_;
int top_;
int maxSize_;
};
template <typename T>
myStack<T>::myStack(int maxSize) : top_(-1),maxSize_(maxSize)
{
s_ = new T[maxSize_];
}
template <typename T>
myStack<T>::~myStack()
{
delete [] s_;
}
template <typename T>
void myStack<T>::Push(const T x)
{
if(this->top_ == maxSize_-1)
{
throw(1);
}
++top_;
s_[top_] = x;
}
template <typename T>
void myStack<T>::Pop()
{
if(isEmpty() == true)
{
throw(1);
}
--(this->top_);
}
template <typename T>
T & myStack<T>::ge