用数组实现堆栈(含模板类)

博客介绍了堆栈是相同数据类型数据的集合,具有后进先出特性,所有操作在堆栈顶端进行。还列举了堆栈的5种基本操作,包括创建空堆栈、压入数据、弹出数据、判断是否为空和是否已满,同时提到int与bool值的对应关系。

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

堆栈(Stack)是一种相同数据类型数据的集合,并且拥有后进先出的特性(last in first out,有时候简写为LIFO),所有的操作都在堆栈顶端进行。

堆栈具有5种基本操作:

  • 创建一个空堆栈 Stack()
  • 把数据压入堆栈 Push()
  • 从栈顶弹出堆栈 Pop()
  • 判断是否为空堆栈 isEmpty()
  • 判断堆栈是否已满 isFull()

注意:int的0相当于bool的false 除了0外的其他数字相当于bool的true

#include"pch.h"
#include<cstdio>
#include<string>
#include<iostream>
using namespace std;

template <class T>
class Stack
{
public:
	int top;
	int max_size;
	T* data;

public:
	Stack(int max_size);
	~Stack();
	int isEmpty();
	int isFull();
	int Push(T mydata);
	T Pop();
};

template<class T>
Stack<T>::Stack(int max_size)
{
	this->max_size = max_size;
	top = -1;
	data = new T[max_size];
}

template<class T>
Stack<T>::~Stack()
{
	delete[] data;
}

template<class T>
int Stack<T>::isEmpty()
{
	if (top == -1)
		return 1;
	else
		return 0;
}

template<class T>
int Stack<T>::isFull()
{
	if (top >= max_size - 1)
		return 1;
	else
		return 0;
}

template<class T>
int Stack<T>::Push(T mydata)
{
	if (!isFull())
	{
		data[++top] = mydata;
		return 1;
	}
	else 
		return 0;
}

template<class T>
T Stack<T>::Pop()
{
	if (!isEmpty())
		return data[top--];
}

int main() //主函数中测试
{
	
	Stack<int> a(5);
	a.Push(5);
	a.Push(4);
	a.Push(3);
	a.Push(2);
	a.Push(1);
	for (int i = 0; !a.isEmpty(); i++)
	{
		printf("%d" ,a.Pop());
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值