C++实现顺序栈
#include <iostream>
using namespace std;
class SeqStack
{
public:
SeqStack(int size = 10)
{
cout<<this<<" SeqStack() " <<endl;
_pstack=new int[size];
_top=-1;
_size=size;
}
~SeqStack(){
cout<<this <<" ~SeqStack() "<<endl;
delete [] _pstack;
_pstack = nullptr;
}
void push(int val)
{
if(full())
resize();
_pstack[++_top]=val;
}
void pop()
{
if(empty()) return;
--_top;
}
int top()
{
return _pstack[_top];
}
bool empty(){
return _top == -1;
}
bool full(){
return _top == _size -1;
}
private:
int *_pstack;
int _top;
int _size;
void resize()
{
int *ptmp = new int[_size*2];
for(int i=0;i<_size;i++)
{
ptmp[i]=_pstack[i];
}
delete [] _pstack;
_pstack = ptmp;
_size*=2;
}
};
SeqStack gs;
int main() {
// SeqStack *ps =new SeqStack(60);
// ps->push(70);
// ps->push(80);
// ps->pop();
// cout<<"s.top(): "<<ps->top()<<endl;
// delete ps;
SeqStack s;
for(int i=0;i<10;i++)
{
s.push(rand()%100);
}
while(!s.empty())
{
s.pop();
}
SeqStack s1(50);
s1.push(30);
return 0;
}
此处注意
1.先构造后析构
2.全局类再程序结束后析构