你写的这个类比较乱,里面的问题也不少。
(1)你声明的str数组根本就没有使用,那声明这个有什么意义。
(2)既然用的是elem数组,那为什么是int类型的,对于括号怎么存放??
(3)elem数组在声明的时候,并没有使用类中定义的elem变量,而是在initlist函数中,定义了一个同名的局部变量,这个变量在出了函数之后就没有意义了。后面根本就没有办法使用。
建议修改的地方:
(1)把str的声明和初始化都去掉,反正没有使用。
(2)用elem数组存放输入的字符串,并将类型改为char*类型。
所以修改的部分为:
class arrstack
{
private:
char * str; //存放栈元素的数组
int maxsize; //栈中最多可存放的元素个数
int top; //栈顶位置,应小于maxsize
public:
int match(arrstack &L); //判别表达式中的括号是否配对
arrstack() //构造函数,固定长度的栈
{
int maxsize = 100;
top = -1;
}
~arrstack() //析构函数
{
delete[] elem;
}
char * elem;
int length;
int listsize;
//void displist(arrstack &L); //输出顺序表
void initlist(arrstack &L); //初始化顺序表
void creat(arrstack &L); //创建顺序表
};
void arrstack::initlist(arrstack &L) //初始化顺序表
{
int listsize = 100;
elem = new char[listsize];
int length = 0; //顺序表中元素个数
}
最后的结果为: