正文

顺序栈的模板类定义2005-09-27 15:19:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/boxer/5417.html

分享到:

/////////////////////////////////////////////////////////////////////////
//   Definition of class CStack    //
//    CStack.h              //
////////////////////////////////////////////////////////////////////////////
const int INITSIZE = 100;
const int INCREMENT= 10;

template <class T>
class CStack
{
public:
 CStack()
 {
  entry = new T[INITSIZE];
  assert(entry);
  nSize  = INITSIZE;
  nTop  = -1;
 }

 CStack(int nInitSize)
 {
  entry = new T[nInitSize];
  assert(entry);
  nSize  = nInitSize;
  nTop  = -1;
 }

 ~CStack()
 {
  if(entry != NULL)
  {
   delete []entry;
  }
  
  nSize = 0;
  nTop = -1;
 }

 void Push(T item)
 {
  if(nTop >= nSize - 1)
  {
   T *p;
   p = new T[nSize+INCREMENT];
   assert(p);
   memcopy((void*)p, (void*)entry, sizeof(T)*(nSize));
   delete []entry;
   entry = p;
   nSize += INCREMENT;
  }
  
  entry[nTop++] = item;
 }

 T Pop()
 {
  return (entry[nTop--]);
 }

 T Top()
 {
  return (entry[nTop]);
 }

 bool IsEmpty()
 {
  return (nTop < 0); 
 }

private:
 T   *entry;  // 栈的存储空间
 int  nSize; // 栈的大小
 int  nTop; // 栈顶位置
};

阅读(2991) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册