基于线性表的堆栈

简介: #ifndef IOSTREAM #include #endif template class Stack { public: Stack(int MaxSize=10); ~Stack(); bool IsEmpty()const{return top==0;} ...
#ifndef IOSTREAM
#include <iostream>
#endif

template<class T>
class Stack
{
public:
	Stack(int MaxSize=10);
	~Stack();
	bool IsEmpty()const{return top==0;}
	bool IsFull()const{return top==MaxTop;}
	T Top()const;
	Stack<T>&Add(const T &x);
	Stack<T>&Delete(T&x);

	int GetStackSize()const;//确定堆栈的大小 
private:
	int top;
	int MaxTop;
	T *stack;//堆栈元素数组
};

//构造函数
template<class T>
Stack<T>::Stack(int MaxSize)
{
	MaxTop=MaxSize-1;
	stack=new T [MaxSize];
	top=-1;//因为top=0的时候等于已经有一个元素了,所以这里为-1
}
//析构函数
template<class T>
Stack<T>::~Stack()
{
	delete [] stack;
}
//弹出栈顶
template<class T>
T Stack<T>::Top()const
{
	if(IsEmpty()) throw OutOfBounds();
	else
	return stack[top];
}
//压入栈
template<class T>
Stack<T>&Stack<T>::Add(const T &x)
{
	if(IsFull())
		throw NoMem();
	top++;
	stack[top]=x;
	return *this;
}

//弹出栈
template<class T>
Stack<T>&Stack<T>::Delete(T&x)
{
	if((IsEmpty()))
		throw OutOfBounds();
	x=stack[top];
	top--;
	return *this;
}

//确定堆栈的大小 
template<class T>
int Stack<T>::GetStackSize()const
{
	if(IsEmpty())
		throw OutOfBounds();
	int len=top;
	return ++len;
}
相关文章
|
NoSQL druid Java
在Redis中秒杀场景下超时与超卖问题的解决方案
在Redis中秒杀场景下超时与超卖问题的解决方案
819 0
|
存储
汇编语言中“$”的作用
汇编语言中“$”的作用
2423 0
汇编语言中“$”的作用
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
GitHub:如何从GitHub上下载文件(下载单个文件或者下载整个项目文件)之详细攻略(图文教程)
|
11月前
|
存储 人工智能
Optimus-1:哈工大联合鹏城实验室推出挑战开放世界中长期任务的智能体框架
Optimus-1是由哈尔滨工业大学(深圳)和鹏城实验室联合推出的智能体框架,旨在解决开放世界环境中长期任务的挑战。该框架结合了结构化知识和多模态经验,通过混合多模态记忆模块、知识引导规划器和经验驱动反射器,显著提升了在Minecraft等环境中的长期任务性能。本文将详细介绍Optimus-1的主要功能、技术原理以及如何运行该框架。
327 7
Optimus-1:哈工大联合鹏城实验室推出挑战开放世界中长期任务的智能体框架
|
11月前
|
机器学习/深度学习 自然语言处理 安全
NeurIPS 2024:如何防御对抗性提示攻击?AdvUnlearn让图片生成风险骤降
扩散模型在文本到图像生成上取得成功,但也带来安全风险。本文提出AdvUnlearn框架,通过结合对抗性训练增强概念擦除的鲁棒性,有效防止对抗性提示攻击,同时保持模型的图像生成质量和实用性。实验验证了其在多种场景下的优势。
310 19
|
11月前
|
存储 API 数据库
使用Python开发获取商品销量详情API接口
本文介绍了使用Python开发获取商品销量详情的API接口方法,涵盖API接口概述、技术选型(Flask与FastAPI)、环境准备、API接口创建及调用淘宝开放平台API等内容。通过示例代码,详细说明了如何构建和调用API,以及开发过程中需要注意的事项,如数据库连接、API权限、错误处理、安全性和性能优化等。
426 5
|
XML JSON Java
腾讯T3-3级资深架构师呕心整理:10万字节springboot教程全解!
可以毫不夸张地说,这篇文章介绍的 SpringBoot 教程基本已经涵盖你工作中遇到的大部分常用的场景。对于每一个springboot的用法,文中都会都会有详细的教程解释。
|
弹性计算 网络协议 安全
阿里云服务器80端口开通教程
阿里云服务器80端口开通教程,阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
1517 0
|
前端开发 JavaScript Java
从0到1制作一个App
教你从零到一学习制作和开发一款自己的App。