加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

C++类模板达成数据结构——栈

发布时间:2021-11-21 20:38:28 所属栏目:教程 来源:互联网
导读:以下是本人用C++类模板实现的一种数据结构栈。希望对别人有所帮助,也希望有人给出意见!毕竟我也是很少用模板这东西,新手一个。 #ifndef _STACK_H_INCLUDED #define _STACK_H_INCLUDED templatetypename T class _stack { public: _stack(size_t _capacity

以下是本人用C++类模板实现的一种数据结构——栈。希望对别人有所帮助,也希望有人给出意见!毕竟我也是很少用模板这东西,新手一个。
 
#ifndef _STACK_H_INCLUDED
#define _STACK_H_INCLUDED
 
template<typename T>
class _stack
{
public:
_stack(size_t _capacity = 1):capacity(_capacity),pArry(new T[_capacity]),length(0),pTop(pArry){}
~_stack(){delete []pArry;}
void ClearStack()
{
                      length = 0;
                      pTop = pArry;
                }
 
 
bool IsEmpty()const {return length == 0;}
size_t GetSize()const {return length;}
void Push(T& e);
T Pop()
{
  --length;
            return *(--pTop);
}
T& GetTop()const;
void vist()const;
private:
size_t capacity;
T *pArry;
size_t length;
T *pTop;
};
 
 
template<typename T>
T& _stack<T>::GetTop()const
{
if(!IsEmpty())
return *(pTop - 1);
else
return *pTop;
}
 
 
template<typename T>
void _stack<T>::Push(T &e)
{
++length;
if(length < capacity)
{
*pTop = e;
++pTop;
}
else
{
T *ptmp(new T[2*capacity]);
T *const phead(ptmp);
T *pT(pArry);
for(int i = 0; i < length; ++i)
{
*ptmp = *pT;
++ptmp;
++pT;
}
capacity *= 2;
delete []pArry;
*(++ptmp) = e;
pTop = ++ptmp;
pArry = phead;
}
}
template<typename T>
void _stack<T>::vist()const
{
T *ptmp(pTop);
while(ptmp != pArry)
{
std::cout<<*(--ptmp)<<" ";
}
}
 
 
#endif // _STACK_H_INCLUDED

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读