这一次把栈的实现稍微的改了一下,觉得比原来好了,当然仍然是只针对基本类型有效。

本文介绍了一个通用模板栈类的实现过程,该栈支持多种数据类型,并提供了基本的栈操作如压栈、弹栈、打印栈内元素等。通过具体示例展示了如何使用这个模板栈进行整数的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <string>
#include <iostream>

using namespace std;

template <class T>
class Mystack{
public:
	Mystack(int max);
	int size(void);
	bool push(T t);
	bool pop(T& t);
	bool printall(void);
	bool isempty(void){
		if(i <= 0)
			return true;
		else 
			return false;
	}
	bool isfull(void){
		if(i >= max)
			return true;
		else 
			return false;
	}
private:
	int max, i;
	T t[0xff];
protected:
};

template <class T>
Mystack<T>::Mystack(int max){
	if(max > 0xfe)
		this->max = 0xfe;
	else
		this->max = max;
	i = 0;
}

template <class T>
int Mystack<T>::size(void){
	return i;
}

template <class T>
bool Mystack<T>::push(T t){
	if(isfull()){
		cout << "The Stack is full!" << endl;
		return false;
	} else{
		this->t[++i] = t;
		return true;
	}
}

template <class T>
bool Mystack<T>::pop(T& t){
	if(isempty()){
		cout << "The Stack is empty!" << endl;
		return false;
	} else{
		t = this->t[i--];
		return true;
	}
}

template <class T>
bool Mystack<T>::printall(void){
	if(isempty())
		return false;
	else {
		for(int i = 1; i <= size(); i++){
			cout << t[i] << " ";
		}
		cout << endl;
		return true;
	}
}


int main(void){
	Mystack<int> s(18);
	int x;
	s.push(8);
	s.push(3);
	s.push(5);
	s.printall();
	s.push(12);
	s.push(33);
	s.printall();
	s.pop(x);
	s.printall();
	for(int i = 0; i < 20; i++) {
		s.push(i + 6);
	}
	s.printall();
	for(int i = 0; i < 20; i++) {
		s.pop(x);
	}
	s.printall();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39410618

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值