栈之C++实现

Stack.hpp

#include<iostream>
using namespace std;
class Stack{
public:
  Stack(int* array,int size = 3)
    :_array(nullptr)
    ,_size(0)
    ,_capacity(size){
    _array = new int[_capacity];
    for(int i = 0; i < size; ++i){
      _array[i] = array[i];
    }
    _size = size;
  }
  void CheckCapacity(){
    if(_size == _capacity){
      int NewCapacity = _capacity*2;
      int* tmp = new int[NewCapacity];
      for(int i = 0; i < _size; ++i){
        tmp[i] = _array[i];
      }
      delete _array;
      _array= tmp;
      _capacity = NewCapacity;
    }else
      return;
  }
  //栈的入栈操作
  void StackPush(const int data){
    CheckCapacity();
    _array[_size] = data;
    _size+=1;
  }
  //栈的出栈操作
  void StackPop(){
    if(!StackEmpty()){
      _size -= 1;
    }else
      return;
  }
  //获取栈顶元素
  int StackTop(){
    return _array[_size-1];
  }
  //获取栈总元素个数
  int StackSize(){
    return _size;
  }
  //判断栈是否为空
  int StackEmpty(){
    return _size == 0;
  }
  //打印栈的元素
  void StackPrint(){
    for(int i = 0; i < _size; ++i){
      cout<<_array[i]<<" ";
    }
    cout<<endl;
  }
  ~Stack(){
    if(_array){
      delete[] _array;
      _array = nullptr;
      _capacity = 0;
      _size = 0;
    }
  }
private:
  int* _array;
  int _size;
  int _capacity;
};


Stack.cpp

#include"Stack.hpp"

int main(){
  Test();
  return 0;
}

测试部分

void Test(){
  int array[] = {1,2,3};
  int size = sizeof(array)/sizeof(array[0]);
  Stack s(array,size);
  s.StackPush(4);
  s.StackPush(5);
  s.StackPush(6);
  s.StackPrint();
  s.StackPop();
  s.StackPop();
  s.StackPrint();
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值