请教。为什么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];
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com