C++类模板实现数据结构——栈
2012-11-27 23:31
429 查看
以下是本人用C++类模板实现的一种数据结构——栈。希望对别人有所帮助,也希望有人给出意见!毕竟我也是很少用模板这东西,新手一个。
#ifndef _STACK_H_INCLUDED #define _STACK_H_INCLUDED template<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); else return *_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++类模板 实现顺序栈
- c++类实现2叉树的抽象数据结构
- c++类的模板成员函数申明和实现必须放在一起
- 三元组压缩存储稀疏矩阵的C++类模板实现
- C++类实现hash表的抽象数据结构(链式解决冲突)
- C++类模板实现顺序表
- c++11通过变参模板实现特殊的数据结构和算法
- C++类模板实现双链表
- C++类模板定义与实现的分离—学习C++数据抽象和问题求解
- 数据结构-散列表(Hash Table)的C++实现模板
- 用C++类模板实现栈结构出现的问题以及思考
- C++类模板声明与实现分离
- C++类模板实现单链表