栈的特点:先进后出,下面展现了其实现过程,具体代码如下:
#include<iostream>
#include<assert.h>
using namespace std;
enum { STACK_INIT_SIZE = 10, STACK_INC_SIZE = 2 };//给定初始容量为10,且按照2倍的增量来扩容
class MyStack
{
/*private:
int _capc;
int _top;
int* _data; //heap
public:
MyStack(int sz = STACK_INIT_SIZE) : _capc(sz), _top(-1), _data(new int[_capc])//按照声明的顺序,而不是参数列表的顺序{}
*/
private:
int* _data; //从堆区获取空间,如果定义成数组,没有办法扩容
int _capc; //容量
int _top; //栈顶
public:
MyStack(int sz = STACK_INIT_SIZE) : _data(nullptr), _capc(sz), _top(-1) //栈的构造函数,获取资源,并进行初始化
{
_data = new(nothrow) int[_capc]; //设置抛出异常时,用if来进行判空才有意义
if (nullptr == _data)
{
exit(1);
}
}
~MyStack() //栈的析构函数,释放资源
{
delete[]_data;
_data = nullptr;//释放之后,_data为失效指针,一定要将其置为空
_capc = 0;
_top = -1;
}
int Size() const//当前元素的个数 常方法封锁指向能力
{
r