请教。为什么top 在push()函数中修改后,再次调用还是-1?
发布网友
发布时间:2022-04-23 14:19
我来回答
共1个回答
热心网友
时间:2023-09-15 10:03
里面有一些小错误,比如溢出控制那里,将原来的数组数据赋值到新的数组,那里有错
然后你不应该在类的公有方法里面直接使用这个类对象,这样是不对的。我只是修改了类的一部分,仅供参考,你写到PrintMatchedPairs这个方法里的代码应该写到main函数里面去。
/*
*Author: QCQ
*email: qinchuanqing918@163.com
*created in: 2014/6/7
*/
# include <iostream>
# include <string>
using namespace std;
class SeqStack
{
private:
char *elements;
int top;
int maxsize;
public :
~SeqStack()
{
delete[]elements;
}
SeqStack (int sz)
{
maxsize=sz;
top=-1;
elements=new char[maxsize];
}
/*SeqStack()
{
top++;
}*/
int push(char ch);
char Pop();
char getTop ();
bool IsEmpty() const
{
return (top==-1) ? true :false;
}
int getSize()const
{
return top+1;
}
void makeEmpty()
{
top=-1;
delete []elements;
}
void overflowProcess();
void PrintMatchedPairs();
};
void SeqStack::overflowProcess()
{
char *newArray=new char[maxsize+50];
if(newArray=NULL)
{
cerr<<"chucuo"<<endl;
}
for(int i=0;i<=top;i++)
{
newArray[i]=elements[i];
}
maxsize+=50;
delete []elements;
elements=newArray;
};
int SeqStack::push (char ch)
{
top++;
cout<<"diao yong ";
elements[top]=ch;
cout<<elements[top];
cout<<top;
//SeqStack t;
return top;
}
char SeqStack::Pop ()
{
(IsEmpty()==true)
return NULL;
else
{
cout<<" D YD";
return elements[top--];
}
}
char SeqStack ::getTop()
{
char ch;
if(IsEmpty()==true)return NULL;
return elements[top];
}