栈之C++实现

mac2026-08-13  4

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)