栈的实现(C++)

通过对简单栈的基本实现代码进行分析了解加深对栈的实现和功能的印象。


template <typename T> //模板类的使用
class miniStack	 //类的定义
{
public:
	miniStack();	//定义栈
	void push(const T &item); //向栈内输入数据(入栈)
	void pop();	//删除栈内元素
	T &top();				
	const T &top() const;
	bool empty() const; //判空
	int size() const;   //栈的元素个数
private:
	vector<T> stackVector; //私有变量,直接引用vector
};

template <typename T>	 // 模板类每一个函数前都要有的
miniStack<T>::miniStack() // 定义栈
{
}

template <typename T>
void miniStack<T>::push(const T &item)
{
	stackVector.push_back(item); //向栈内输入数据,利用vector的push_back()函数直接输入
}

template <typename T>
void miniStack<T>::pop() //删除调用
{
	if (empty()) //判空抛错
		throw underflowError("miniStack pop(): stack empty");
	stackVector.pop_back(); //调用pop_back删除最后一个
}

template <typename T>
T &miniStack<T>::top()
{
	if (empty()) //判空抛错

		throw underflowError("miniStack top(): stack empty");
	return stackVector.back(); //vector::back的用法是输出数组里最后一个元素
}

template <typename T>
bool miniStack<T>::empty() const
{
	return stackVector.size() == 0; //判断栈的大小
}

template <typename T>
int miniStack<T>::size() const //输入栈的空间大小size
{
	return stackVector.size();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值