问题描述
- 我写的建立表达式二叉树的一个函数,delete[]p和B.pop(a1)出错,不明白为什么
-
BinaryTree::BinaryTree(string A){
arrStack B(NUM);
BinaryTreeNode a1(" "), a2(" ");
int i = 0;
while (A[i] != '='){
char *p = new char[];
char *q = p;
int j = 0;
if ((int)A[i] >= 48 && (int)A[i] <= 57){
while ((int)A[i] >= 48 && (int)A[i] <= 57){
*p = A[i];
i++;
j++;
p++;
}
BinaryTreeNode node1(p);
B.push(node1);
}
else if ((int)A[i] == 32){
i++;
}
else if ((int)A[i] == 42 || (int)A[i] == 43 || (int)A[i] == 45 || (int)A[i] == 47){
*p = A[i];
BinaryTreeNode node2(p);
B.pop(a1);
B.pop(a2);
node2.setLeftChild(&a2);
node2.setRightChild(&a1);
B.push(node2);
i++;
}
p = q;
delete []p;
}
B.pop(a1);
*root = a1;
}这个arrStack栈是我自己写的,代码如下:
template
class arrStack{
private:
int mSize;
int top;
T *st;
public:
arrStack(int size){
mSize = size;
top = -1;
st = new T[mSize];
}
arrStack(){
top = -1;
}
bool push(T item){
if (top == mSize - 1){
cout << "The arrStack has full!" << endl;
return false;
}
st[++top] = item;
return true;
}
bool pop(T &item){
if (top == -1){
cout << "The arrStack is empty!" << endl;
return false;
}
item = st[top--];
return true;
}
T topItem(){
if (top == -1){
cout << "The arrStack is empty!" << endl;
return false;
}
return st[top];
}
bool isEmpty(){
if (top == -1)
return true;
else
return false;
}
bool isFull(){
if (top == mSize - 1)
return true;
else
return false;
}
};