栈的基本操作
来源:互联网 发布:战千雄源码 编辑:程序博客网 时间:2024/04/30 09:45
栈的特点:先进后出
#include<iostream>#include<assert.h>using namespace std;template<class T>class Stack{public: Stack(size_t capacity = 10)//构造函数 :_capacity(capacity) ,_size(0) { _pData=new T[capacity]; } Stack(const Stack<T>& s)//拷贝构造函数 :_pData(NULL) ,_size(s.Size()) ,_capacity(s._capacity) { _pData=new T[capacity]; for(size_t i=0;i<s.Size();i++) { _pData[i]=s._pData[i]; } } Stack<T>& operator=(const Stack<T>& s)//赋值运算符重载 { if (this != &s) { _capacity = _capacity * 2 + 3; T * tmp = new int[s._capacity]; for (size_t i = 0; i < s._size; ++i) { _pData[i] = s._pData[i]; } delete _pData; _pData = tmp; _size = s._size; _capacity = s._capacity; } return *this; } void Push(const T& x)//入栈 { _CheckCapacity();//检测栈的容量 _pData[_size++]=x; } void Pop()//出栈 { assert(!Empty()); --_size; } size_t Size()const//栈中元素的个数 { return _size; } T& Top()//取栈顶元素 { return _pData[_size-1]; } const T& Top()const { return _pData[_size-1]; } bool Empty()//判断栈是否空 { return 0==_size; }private: void _CheckCapacity()//检测栈的容量 { if(_size>=_capacity) { // 申请空间 T* temp = new int[2*_capacity+3]; // 拷贝元素 //memcpy(); 缺点:浅拷贝 有点:速度快 //memcopy(temp,_pData,sizeof(T)*_size); for(size_t i=0;i<_size;i++) { temp[i]=_pData[i]; } // 释放旧空间 delete[] _pData; // 指向新空间 _pData=temp; _capacity *= 2; } }private: T* _pData; size_t _capacity; size_t _size;};int main(){ Stack<int> s; s.Push(1); s.Push(2); s.Push(3); s.Push(4); s.Push(5); s.Push(6); s.Push(7); s.Push(8); s.Push(9); s.Push(10); cout<<s.Size()<<endl; cout<<s.Empty()<<endl; s.Pop(); cout<<s.Size()<<endl; cout<<s.Top()<<endl;}
0 0
- 栈的基本操作
- 栈的基本操作
- 栈 的基本操作。
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- 栈的基本操作
- Xamarin.android 的pagerview滑动指示器
- JS对HTML进行转义
- iOS 地图坐标系转换
- 《将博客搬至jianshu》
- phpcms v9无法连接数据库服务器,请检查配置
- 栈的基本操作
- 从0到1利用React-Native构建百思不得姐(四)
- angular指令中@,=,&的区别
- OpenCV 直线拟合及应用
- eclipse中导入Maven工程,包引入路径报错
- 【Android】存储选项详解
- Tinker使用过程及注意点(1)-环境搭建及简单使用
- DeepLab:深度卷积网络,多孔卷积 和全连接条件随机场 的图像语义分割 Semantic Image Segmentation with Deep Convolutional Nets, Atro
- 在hbuilder中利用xdebug helper 断点调试php