C++类模板实现数据结构——栈
来源:互联网 发布:汉诺塔问题算法 编辑:程序博客网 时间:2024/05/17 06:04
以下是本人用C++类模板实现的一种数据结构——栈。希望对别人有所帮助,也希望有人给出意见!毕竟我也是很少用模板这东西,新手一个。
#ifndef _STACK_H_INCLUDED#define _STACK_H_INCLUDEDtemplate<typename T>class Stack{public:Stack(size_t capacity = 8): _capacity(capacity), _arry(new T[_capacity]), _length(0), _top(_arry){}~Stack();inline void clearStack();inline bool isEmpty()const;inline size_t getSize()const;inline size_t getCapacity()const;void push(const T& e);inline T pop();inline const T& getTop()const;private: Stack(const Stack &s){} Stack& operator=(const Stack &s){return *this;}size_t _capacity;T *_arry;size_t _length;T *_top;};//template<typename T>//Stact<T>::Stack(size_t capacity):// _capacity(capacity),// _arry(new T[_capacity]),// _length(0),// _top(_arry)//{//}template<typename T>Stack<T>::~Stack(){ delete []_arry;}template<typename T>const T& Stack<T>::getTop()const{if(!isEmpty())return *(_top - 1);elsereturn *_top;}template<typename T>void Stack<T>::push(const T &e){if(_length < _capacity){*_top = e;++_top;}else{T *tmp(new T[2*_capacity]);T *const head(tmp);T *old(_arry);for(int i = 0; i < _length; ++i){*tmp = *old;++tmp;++old;}_capacity *= 2;delete []_arry;_arry = head;*tmp = e;_top = ++tmp;}++_length;}template<typename T>void Stack<T>::clearStack(){ _length = 0; _top = _arry;}template<typename T>T Stack<T>::pop(){ --_length; return *(--_top);}template<typename T>bool Stack<T>::isEmpty()const{ return _length == 0;}template<typename T>size_t Stack<T>::getSize()const{ return _length;}template<typename T>size_t Stack<T>::getCapacity()const{ return _capacity;}#endif // _STACK_H_INCLUDEDPS:在代码中有一个注释起来的地方,是该模板类的构造函数,本人本想把它在类外实现,但是编译错误,弄了好久,始终找不到原因,希望知道错误之处的读者能为我指点迷津,谢谢!
- [数据结构]栈的实现(c++/类模板)
- 数据结构—类模板实现链表
- C++类模板实现数据结构——栈
- 数据结构——顺序双栈模板类实现
- 数据结构——链式栈模板类实现
- 数据结构(C++)最小优先权队列实现<模板类>
- [数据结构] 顺序表的实现(c++/类模板)
- [数据结构]链表的实现(c++/类模板)
- 数据结构之顺序表——C++模板类实现
- 数据结构之单链表——C++模板类实现
- 数据结构之单链表——C++模板类实现
- 数据结构——静态链表模板类实现
- 数据结构——链式队列模板类实现
- 数据结构实现(栈类模板)
- 数据结构学习:栈的模板类实现
- 数据结构之图——模板实现
- 数据结构(C++)-用顺序结构实现的栈模板类
- 数据结构(c++)栈的模板类(使用链表实现)
- 门面(Facade)模式
- 实现内存检测工具
- leetcode001:3sum solution
- Android 处理图片( 图像二值化、锐化、转换格式)
- 用MyEclipse搭建SSH框架 Struts Spring Hibernate
- C++类模板实现数据结构——栈
- 十道海量数据处理面试题与十个方法大总结
- A SOAP Example in Java
- Android初级开发第六讲--Activity的布局
- 这么多技术我该怎么学
- C2. Party
- Android 实现 选择文件对话框
- 字符串Hash算法
- LinkedList实现