[C++]数据结构:公式化描述的堆栈Stack的简单创建与使用

//公式化描述的堆栈类Stack 
#include <iostream>
using namespace std;  

template <class T>
class Stack{
	public:
		Stack(int MaxStackSize=10);
		~Stack(){delete[]stack;}
		bool IsEmpty()const{return top==-1;}
		bool IsFull()const{return top==MaxTop;}
		T Top()const;
		Stack<T>& Add(const T& x);
		Stack<T>& Delete(T& x);
		void Show()const;
	private:
		int top;										//栈顶
		int MaxTop;										//最大栈顶值
		T *stack;										//堆栈元素数组
};

class OutOfBounds{    
    public:    
        OutOfBounds(){    
        cout<<"Out Of Bounds!"<<endl;    
        }    
};  

template<class T>
void Stack<T>::Show()const{
	for(int i = 0;i<=top;i++){
		cout<<stack[i]<<endl;
	}
}




//内存不足的异常类    
class NoMem{    
    public:    
        NoMem(){    
            cout<<"No Memory!"<<endl;    
        }    
};  

template <class T>
Stack<T>::Stack(int MaxStackSize){
	MaxTop = MaxStackSize -1;
	stack = new T[MaxStackSize];
	top = -1;
};

//返回栈顶元素
template<class T>
T Stack<T>::Top()const{
	if(IsEmpty)
		throw OutOfBounds();
	else return stack[top];
}

//添加元素
template<class T>
Stack<T>& Stack<T>::Add(const T& x){
	if(IsFull()){
		throw
			NoMem();
	}
	stack[++top]=x;
	return *this;
}

//删除元素
template<class T>
Stack<T>& Stack<T>::Delete(T& x){
	if(IsEmpty()){
		throw
			OutOfBounds();
	}
	x=stack[top--];
	return *this;
}

int main(){
	Stack<int>myStack;
	myStack.Add(1);
	myStack.Add(2);
	myStack.Add(3);
	myStack.Add(4);

	myStack.Show();

	return 0;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值