动态顺序栈的简单实现

来源:互联网 发布:数据库和excel的区别 编辑:程序博客网 时间:2024/06/08 05:33

实现代码

#pragma once//防止文件重复包含#include<iostream>using namespace std;template<class T>class Stack{public:Stack():_pData(new T[3]), _capacity(3), _size(0){}void Push(const T& data){CheckCapacity();_pData[_size++] = data;}void Pop(){_size--;}size_t Size()const{return _size;}size_t Capacity()const{return _capacity;}bool Empty()const{return 0 == _size;}T& top()//栈顶{return _pData[_size - 1];}T& top()const{return _pData[_size - 1];}private:void CheckCapacity(){size_t size = Size();size_t capacity = Capacity();size_t newcapacity = 2 * capacity + 2;if (size >= capacity){//增容T* tmp = new T[newcapacity];for (size_t i = 0; i<size; i++){tmp[i] = _pData[i];}delete[] _pData;//释放旧空间_pData = tmp;}}private:T* _pData;size_t _capacity;size_t _size;};
测试代码

void Test(){Stack<int> s;s.Push(1);s.Push(2);s.Push(3);cout << "s.top="<<s.top() << endl;s.Pop();cout << "s.top=" << s.top() << endl;}int main(){Test();system("pause");return 0;}

 
原创粉丝点击