设为首页 加入收藏

TOP

C++类模板实现数据结构——栈
2014-11-24 08:12:35 来源: 作者: 【 】 浏览:0
Tags:模板 实现 数据结构

以下是本人用C++类模板实现的一种数据结构——栈。希望对别人有所帮助,也希望有人给出意见!毕竟我也是很少用模板这东西,新手一个。


#ifndef _STACK_H_INCLUDED
#define _STACK_H_INCLUDED


template
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
T& _stack::GetTop()const
{
if(!IsEmpty())
return *(pTop - 1);
else
return *pTop;
}



template
void _stack::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
void _stack::vist()const
{
T *ptmp(pTop);
while(ptmp != pArry)
{
std::cout<<*(--ptmp)<<" ";
}
}



#endif // _STACK_H_INCLUDED


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++指向类成员函数的指针 下一篇Linux 下视频设备设置的几个参数 ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·“我用Java 8”已成 (2025-12-26 11:19:54)
·下载 IntelliJ IDEA (2025-12-26 11:19:52)
·Java是什么?(通俗 (2025-12-26 11:19:49)
·雾里看花:真正意义 (2025-12-26 10:54:36)
·C++——模板(超详细 (2025-12-26 10:54:34)