数据结构::模拟实现动态栈
来源:互联网 发布:东阳司法拍卖网淘宝网 编辑:程序博客网 时间:2024/06/05 02:17
#include<iostream>#include<assert.h>using namespace std;//动态栈template<typename T>class Stack{public:Stack() //构造函数:arr(NULL),_size(0),_capacity(0){}Stack(const Stack<T>& s) //拷贝构造函数:arr(NULL),_size(s._size),_capacity(s._capacity){arr = new int[s._capacity];for(size_t i = 0; i<s._size; i++){arr[i] = s.arr[i];}}Stack<T>& operator=(const Stack<T>&s) //赋值运算符重载{if(this != &s){_capacity = _capacity*2+3;T*temp = new int[s._capacity];for(size_t i = 0; i<s._size; i++){temp[i] = s.arr[i];}delete[]arr;arr = temp;_size = s._size;_capacity = s._capacity;}return *this;}~Stack() // 析构函数{delete[]arr;_size = 0;_capacity = 0;}public:void CheckCapacity() //检查动态栈的容量是否已满 {if(_size>=_capacity){T *temp = new int[_capacity*2+3];for(size_t i = 0; i<_size; i++){temp[i] = arr[i];}delete[] arr;arr = temp;_capacity = _capacity*2+3;}}void Push(const T& x) //压栈{CheckCapacity();arr[_size] = x;++_size;}void Pop() // 出栈{assert(arr);--_size;}T& Top() //返回栈顶的元素{return arr[_size-1];}const T& Top()const{return arr[_size-1];} size_t Size() //求栈的有效存储元素{return _size;}bool Empty() //检查栈是否为空{return _size==0;}protected: T*arr;size_t _size; //有效元素size_t _capacity; //动态栈的总容量};//测试基本函数void Funtest1(){Stack<int> s1;Stack<int> s2(s1);Stack<int> s3;s3 = s2;}//测试插入删除函数void Funtest2(){Stack<int> s;s.Push(1);s.Push(2);s.Push(3);s.Push(4);while(!s.Empty()){cout<<s.Top()<<" ";s.Pop();}}//测试后面的函数void Funtest3(){Stack<int> s;s.Push(1);s.Push(2);s.Push(3);s.Push(4);s.Size();}int main(){//Funtest1();//Funtest2();Funtest3();return 0;}
0 0
- 数据结构::模拟实现动态栈
- 动态栈模拟实现
- 模拟实现通讯录-动态
- 模拟实现动态通讯录
- 数据结构栈stack的动态数组实现
- 【C++数据结构】动态数组栈的实现
- 数据结构::模拟STL实现list
- 数据结构示例之数组模拟多栈实现
- c语言实现数据结构中的栈(数组模拟)
- 模拟实现通讯录<二>(动态模拟)
- 【数据结构】 栈的模拟
- 动态编译实现ARM模拟
- 模拟JDK动态代理实现
- 模拟实现JDK动态代理
- 数据结构之动态数组实现
- 模拟JDK动态代理 ; 自己动手模拟实现java动态代理
- 【数据结构】Stack和Queue的模拟实现
- 【数据结构】向STL看齐-模拟实现红黑树
- Spring的AOP
- webview动画引发的Crash问题
- 利用springaop导致基于实现类注入失败的原因及解决方案
- python连接Mysql数据库字符乱码的问题
- thinkphp中session过期时间的配置
- 数据结构::模拟实现动态栈
- Linux基本命令
- (POJ2406)Power Strings <KMP算法求最小循环节>
- 事务,回滚,数据库管理Transaction
- Android studio JDK和SDK路径设置
- python以正确的宽度在居中的‘盒子’打印一个句子
- iOS 获取字符串在给定条件下的CGRect
- 复习iOS动画-Easing
- css的绝对定位