⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack.h

📁 用bcg库编写的java IDE 源码
💻 H
字号:
// Stack.h: interface for the Stack class.
//
//////////////////////////////////////////////////////////////////////


#ifndef STACKT
#define STACKT

#define STACK_CAPACITY 100

template<typename StackElement>
class Stack  
{
public:
	Stack();
    virtual ~Stack();
	bool empty()const;
	void push(const StackElement& value);
	void top(StackElement&);
	void pop(StackElement&);
	void growStack();
private:
	StackElement* stkArray;//[STACK_CAPACITY];
	int stkTop;
	int stk_nSize;
};

template <typename StackElement>
Stack<StackElement>::Stack()
{
  stkTop    = -1;
  stk_nSize = 50;
  stkArray  = new StackElement[stk_nSize];
}

template <typename StackElement>
Stack<StackElement>::~Stack()
{
 delete []stkArray;
}

template <typename StackElement>
inline bool Stack<StackElement>::empty() const{return (stkTop == -1);}

template <typename StackElement>
void Stack<StackElement>::push(const StackElement& value)
{
	if(stkTop</*STACK_CAPACITY -1*/stk_nSize-1)
	{
	  ++stkTop;
	  stkArray[stkTop] = value;
	}
	else
	{
      growStack();
	  ++stkTop;
	  stkArray[stkTop] =value;
	}
}

template <typename StackElement>
void Stack<StackElement>::growStack()
{
  StackElement* pOldStk = stkArray;
  stkArray = new StackElement[2*stk_nSize];
  for(int nIndex =0; nIndex<stk_nSize;++nIndex)
	 stkArray[nIndex] = pOldStk[nIndex];
  delete []pOldStk;
  stk_nSize = stk_nSize*2;
}


template <typename StackElement>
void Stack<StackElement>::top(StackElement& seTop)
{
   if(stkTop >= 0)
		seTop = stkArray[stkTop];
}

template <typename StackElement>
void Stack<StackElement>::pop(StackElement& seItem)
{
    top(seItem);
	if(stkTop >= 0)
		--stkTop;
}

#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -