先前缀转后缀,在后缀表达式求值
要求:输入数字中没有负数,可以有括号但必须是英文括号
输出中已经把前缀转的后缀标记出来了。
函数可以用,作者已经测试过,有问题请留言
#include <iostream>
#include <stdio.h>
using namespace std;
template<class T>
//栈的抽象数据类型定义
class Stack {
public:
void clear();
};
//栈的顺序实现
template<class T>
class arrStack :public Stack<T> {
private:
int mSize;//栈中最多可存放的元素个数;
int top;//栈顶位置,应小于mSize,top指向最上面的元素;
T* st;//存放栈元素的数组;
public:
arrStack(int size) {
mSize = size;
top = -1;
st = new T[mSize];
}
arrStack() {
top = -1;
}
~arrStack() {
delete[]st;
}
void clear() {
top = -1;
}
bool push(const T item) {
if (top == mSize - 1) {
cout << "stackoverflow" << endl;
return false;
}
else {
st[++top] = item;
return true;
}
}
bool pop(T& item) {
if (top == -1) {
//空栈
cout << "栈为空,不能执行出栈操作"<<endl;
return false;
}
else {
item = st[top--];
return true;
}
}
bool returntop(T& item) {
if (top == -1) {
//空栈
cout << "栈为空,不能执行出栈操作"<<endl;
return false;
}
else {
item