sqstack.h

来自「用C++编写的一个计算器」· C头文件 代码 · 共 70 行

H
70
字号
//Sequence-Stack class is declared
//SqStack.h
#if !defined (_SQSTACK_H_CPP)
#define _SQSTACK_H_CPP

#if     _MSC_VER > 100
#pragma once
#endif

template <class T>
class SqStack{
	public:
		SqStack(int size=100);
		~SqStack(){delete [] stack;}
		void ClearStack(void);
		bool GetTop(T& e) const;
		bool IsEmpty(void) const;
		int StackLength(void) const;
		bool Push(const T& e);
		bool Pop(T& e);
	private:
		int maxsize;
		int top;
		T *stack;
};

template <class T>
SqStack<T>::SqStack(int size/*=100*/):top(-1),maxsize(size){
	if(!(stack = new T[maxsize]))
		exit(1);
}

template <class T>
void SqStack<T>::ClearStack(void){
	top=-1;
}

template <class T>
bool SqStack<T>::GetTop(T& e) const{
	if(-1 == top) return false;
	e = stack[top];
	return true;
}

template <class T>
bool SqStack<T>::IsEmpty(void) const{
	return -1==top;
}

template <class T>
int SqStack<T>::StackLength(void) const{
	return top+1;
}

template <class T>
bool SqStack<T>::Pop(T& e){
	if(-1 == top) return false;
	e = stack[top];
	--top;
	return true;
}

template <class T>
bool SqStack<T>::Push(const T& e){
	if(top>=maxsize-1) return false;
	stack[++top]=e;
	return true;
}

#endif

⌨️ 快捷键说明

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