顺序栈

简介:
SeqStack.h

template<typename Type> class SeqStack{
public:
	SeqStack(int sz):m_ntop(-1),m_nMaxSize(sz){
		m_pelements=new Type[sz];
		if(m_pelements==NULL){
			cout<<"Application Error!"<<endl;
			exit(1);
		}
	}
	~SeqStack(){
		delete[] m_pelements;
	}

public:

	void Push(const Type item); //push data
	Type Pop();                 //pop data
	Type GetTop() const;        //get data
    void Print();               //print the stack
	void MakeEmpty(){           //make the stack empty
		m_ntop=-1;
	}
	bool IsEmpty() const{
		return m_ntop==-1;
	}
	bool IsFull() const{
		return m_ntop==m_nMaxSize-1;
	}
	

private:
	int m_ntop;
	Type *m_pelements;
	int m_nMaxSize;

};

template<typename Type> void SeqStack<Type>::Push(const Type item){
	if(IsFull()){
		cout<<"The stack is full!"<<endl;
		return;
	}
	m_pelements[++m_ntop]=item;
}

template<typename Type> Type SeqStack<Type>::Pop(){
	if(IsEmpty()){
		cout<<"There is no element!"<<endl;
		exit(1);
	}
	return m_pelements[m_ntop--];
}

template<typename Type> Type SeqStack<Type>::GetTop() const{
	if(IsEmpty()){
		cout<<"There is no element!"<<endl;
		exit(1);
	}
	return m_pelements[m_ntop];
}

template<typename Type> void SeqStack<Type>::Print(){
	cout<<"bottom";
	for(int i=0;i<=m_ntop;i++){
		cout<<"--->"<<m_pelements[i];
	}
	cout<<"--->top"<<endl<<endl<<endl;
}

Test.cpp
#include<iostream>
using namespace std;

#include "SeqStack.h"

int main(){
	SeqStack<int> stack(10);
	int init[10]={1,2,6,9,0,3,8,7,5,4};
	for(int i=0;i<10;i++){
		stack.Push(init[i]);
	}
	stack.Print();

	stack.Push(88);

	cout<<stack.Pop()<<endl;
	stack.Print();
	
	stack.MakeEmpty();
	stack.Print();

	stack.Pop();
	return 0;
}
目录
相关文章
|
6月前
|
传感器 人工智能 算法
智能眼镜,从科技幻想到现实生活的触手可及
智能眼镜,从科技幻想到现实生活的触手可及
247 22
|
10月前
|
人工智能 Cloud Native 安全
从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势
本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三)在云栖大会的精彩分享。讲师深入浅出的分享了软件架构演进过程中,网关所扮演的各类角色,AI 应用的流量新特征对软件架构和网关所提出的新诉求,以及基于阿里自身实践所带来的开源贡献和商业能力。
421 106
|
8月前
|
存储 安全 大数据
数据安全中心:云上全域数据防泄漏与安全解决方案
在数字化转型中,企业面临数据安全挑战。为应对《个人信息保护法》等法规要求,我们推出“数据安全中心”,提供云上全域数据防泄漏与安全解决方案。该产品涵盖敏感数据自动识别、分级分类、大数据审计、数据脱敏及列加密等功能,帮助企业轻松实现数据治理,确保合规并保护客户信任。欢迎参加12月11日晚7:30阿里云中小企业直播间了解更多。
189 2
直接使用阿里图标SVG图片
直接使用阿里图标SVG图片
420 0
直接使用阿里图标SVG图片
|
文字识别 监控 机器人
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览
百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览
429 0
|
运维 前端开发 JavaScript
JavaScript Canvas实现复杂酷炫的爱心表白用
JavaScript Canvas实现复杂酷炫的爱心表白用
8856 7
JavaScript Canvas实现复杂酷炫的爱心表白用
|
存储 弹性计算 固态存储
阿里云服务器租用费用
阿里云服务器租用费用包括活动价格和收费标准,阿里云服务器收费包括CPU内存、公网带宽和系统盘必须收费项,阿里云服务器活动价格越来越便宜1核2G的云服务器ECS共享型n4实例35元一年起
1383 1
阿里云服务器租用费用
|
数据可视化 数据挖掘
WGCNA 简明指南|1. 基因共表达网络构建及模块识别
WGCNA 简明指南|1. 基因共表达网络构建及模块识别
1497 0
WGCNA 简明指南|1. 基因共表达网络构建及模块识别
|
JSON 缓存 自然语言处理
flutter版本更新常见问题大盘点
flutter版本更新常见问题大盘点
829 0
flutter版本更新常见问题大盘点
|
Oracle Java 关系型数据库
Java中关于win下的环境变量以及不同版本JDK自由切换的原理分析,授人以渔
Java中关于win下的环境变量以及不同版本JDK自由切换的原理分析,授人以渔
487 0
Java中关于win下的环境变量以及不同版本JDK自由切换的原理分析,授人以渔