C++_模板举例_使用模板实现集合类(堆栈)

//stack集合类是一个简单的堆栈的实现。
//这里有两个模板参数,T和size,指定堆栈中的元素类型和堆栈中项数的最大值。
//push 和 pop成员函数添加和删除堆栈中的项,并在堆栈底部增加。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
template <class T,int size> //出错点
class stack
{
private:
	T items[size];
	int top;
	const int MaxSize;
public:
	stack():MaxSize(size)
	{
		top=-1;//指向栈底
	}
	bool IsFull();
	bool IsEmpty();
	void push(const T item);
	T pop();
};

template <class T,int size>
bool stack<T,size>::IsFull()
{
	if(top==MaxSize-1)
	{
		return true;
	}
	else
	{
		return false;
	}
}

template <class T,int size>
bool stack<T,size>::IsEmpty()
{
	if (top==-1)
	{
		
		return true;
	}
	else
	{
		return false;
	}
}

template <class T,int size>//出错点
void stack<T,size>::push(const T item)
{
	if (IsFull())
	{
		cout<<"stack is full"<<endl;
		return;
	}
	else
	{
		items[++top]=item;
	}
}

template <class T,int size>
T stack<T,size>::pop()
{
	if (!IsEmpty())
	{
		return items[top--];
	}
	else
	{
		cout<<"栈空"<<endl;
		return 0;
	}
}

void main()
{
	//stack<string,5> s;//栈中存放字符串
	stack<int,5> s;   //栈中存放整型数据
	while(!s.IsFull())
	{
		//s.push("123");//字符串入栈
		s.push(1);//整型数据入栈
	}
	while(!s.IsEmpty())
	{
		cout<<s.pop()<<endl;
	}
	system("pause");
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值