C++模板类的示例-栈

#include <iostream>         // 包含头文件。
using namespace std;        // 指定缺省的命名空间。
          
// typedef string DataType;        // 定义栈元素的数据类型。
          
template <class DataType>
class Stack       // 栈类
{
private:
	DataType* items;               // 栈数组。
	int   stacksize;         // 栈实际的大小。
	int   top;                  // 栈顶指针。
public:
	// 构造函数:1)分配栈数组内存;2)把栈顶指针初始化为0。
	Stack(int size) :stacksize(size), top(0) {
		items = new DataType[stacksize];
	}
	~Stack() {
		delete [] items; items = nullptr;
	}
	bool isempty() const {            // 判断栈是否为空。
		return top == 0;
	}
	bool isfull() const {                 // 判断栈是否已满。
		return top == stacksize;
	}
	bool push(const DataType& item) {   // 元素入栈。
		if (top < stacksize) { items[top++] = item; return true; }
		return false;
	}
	bool pop(DataType& item) {               // 元素出栈。
		if (top > 0) { item = items[--top]; return true; }
		return false;
	}
};
       
int main()
{
	Stack<string> ss(5);       // 创建栈对象,大小是5。
           
	// 元素入栈。
	// ss.push(1); ss.push(2); ss.push(3); ss.push(4); ss.push(5);
	ss.push("西施"); ss.push("冰冰"); ss.push("幂幂"); ss.push("金莲");
          
	// 元素出栈。
	string item;
	while (ss.isempty() == false)
	{
		ss.pop(item);   cout << "item = " << item << endl;
	}
}

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值