stack的模拟实现
来源:互联网 发布:余弦匹配算法 编辑:程序博客网 时间:2024/05/19 22:51
Stack的模拟实现
栈的特性:后进先出接口一般有:push(); pop();size();empty();top();
#pragma once#include <assert.h>//const size_t N = 10;//#define NUM 20template<class T>class Stack{public: Stack() :_a(NULL) ,_size(0) ,_capacity(0) {} ~Stack() { delete[] _a; _a = NULL; _size = _capacity = 0; } Stack(const Stack<T>& s); Stack<T>& operator=(const Stack<T>& s);public: void Push(const T& x) { _CheckCapacity(); _a[_size++] = x; } void Pop() { assert(_size); --_size; } T& Top() { assert(_size > 0); return _a[_size-1]; } const T& Top() const { assert(_size > 0); return _a[_size-1]; } size_t Size() { return _size; } bool Empty() { return _size == 0; }protected: void _CheckCapacity() { if (_size >= _capacity) { size_t newCapacity = _capacity*2 + 3; T* tmp = new T[newCapacity]; // 类型萃取 if (_a) { //memcpy(tmp, _a, _size*sizeof(T)); for (size_t i = 0; i < _size; ++i) { tmp[i] = _a[i]; } } _capacity = newCapacity; delete[] _a; _a = tmp; } }protected: T* _a; size_t _size; //size_t _top; size_t _capacity;};
阅读全文
0 0
- stack的模拟实现
- 【数据结构】Stack和Queue的模拟实现
- 模拟实现stack
- 模拟实现 stack和queue
- 用js模拟的Stack
- 模板模拟实现stack和queue
- 使用Vector模拟实现STL中的stack
- C++ 汉诺塔算法实现 stack模拟
- 模拟实现容器适配器 stack queue
- 使用堆栈(Stack)模拟实现队列(FIFO)
- 封装顺序栈(模拟实现stack)
- 封装顺序栈(模拟实现stack)
- stack容器的实现
- stack的数组实现
- stack的简单实现
- Stack 的 java 实现
- stack的实现
- 栈:stack的实现
- Osg 实例中用到的资源
- Java自定义注解和运行时靠反射获取注解
- C#根据枚举的数值(Value)获取对应的Name值
- Hadoop中YARN和Container的概念详解
- SCI信件回复
- stack的模拟实现
- Invalid <url-pattern> /*.action in filter mapping错误以及(Servlet和Filter的url匹配url-p)
- 关于 epoch、 iteration和batchsize ,关于batchsize
- Java中HashMap的工作原理
- MatConvNet中mnist源码解析
- destoon 常量与变量
- 也来玩玩反编译
- repo问题
- 【资讯】福布斯:旅行积分计划是区块链主要目标,对旅行者来说是好消息