栈(顺序存储)C++模板实现
#include <iostream>
using namespace std; template <typename T>
class stack{
private:
int top; //栈顶指针
int maxLen; //栈最大长度
T *data; //用数组来创建栈
public:
stack(int top_ = -1 , int maxLen_ = 10):top(top_),maxLen(maxLen_){
data = new T[maxLen]; //长度为maxLen的动态数组
}
~stack(){
delete [] data; //释放动态数组
}
void Push(T x); //将x推进栈
void Pop(); //推出栈顶元素
T getPeek(); //读栈顶元素
bool isEmpty(); //判断栈是否为空
bool isFull(); //判断栈是否满
void printAll(); //打印整个栈
}; template <typename T>
void stack<T>::Push(T x){ //将x推进栈,实现部分
if(isFull())
return;
top++;
data[top] = x;
} template <typename T>
void stack<T>::Pop(){ //推出栈顶元素,实现部分
if(isEmpty())
return;
top--;
} template <typename T>
T stack<T>::getPeek(){ //获得栈顶元素,实现部分
if(isEmpty())
return;
return data[top];
} template <typename T>
bool stack<T>::isEmpty(){ //判断栈是否为空,实现部分
return top==-1;
} template <typename T>
bool stack<T>::isFull(){ //判断栈是否满,实现部分
return top==maxLen-1;
} template <typename T>
void stack<T>::printAll(){ //打印栈内元素,实现部分
if(isEmpty())
return;
for(int i = 0; i <=top ; i++){
cout<<data[i]<<endl;
}
}
void main(){
stack<int> a; //创建元素类型为int的栈对象
a.Push(1); //将1推进栈
a.Push(2); //将2推进栈
a.Push(3); //将3推进栈
a.Push(4); //将4推进栈
a.Push(5); //将5推进栈
a.Pop(); //弹出栈顶元素
a.printAll(); //打印栈内元素
}
栈(顺序存储)C++模板实现的更多相关文章
- C 栈顺序存储
// seqstack.h #ifndef _MY_SEQSTACK_H_ #define _MY_SEQSTACK_H_ typedef void SeqStack; SeqStack* SeqSt ...
- C++:栈(stack)的模板类实现
1.基本概念 栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入.进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹 ...
- C++ 数据结构模板 队列 栈 动态链表 模板 Queue Stack List
C++数据结构模板,可以实现基本功能,用法和stl差不多,比如Q.pop();Q.push(a);Q.front();...... (由于动态链表用的不多,若有错误望各位大神不吝赐教:) 队列: cl ...
- javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例
栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...
- 用栈来递归 模板 honoi
用栈来模拟递归的技巧 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include& ...
- 栈(stack),C++模板实现
body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...
- C语言实现栈(顺序存储方式)
#include <stdio.h> #include <stdlib.h> //提供malloc()原型 #include <stdbool.h> //提供tru ...
- 单调栈高封装模板hia hia hia
这个单调栈应该可以了,舒服舒服 #include <bits/stdc++.h> using namespace std; #define limit (400000 + 5)//防止溢出 ...
- 应用编排服务之ELK技术栈示例模板详解
日志对互联网应用的运维尤为重要,它可以帮助我们了解服务的运行状态.了解数据流量来源甚至可以帮助我们分析用户的行为等.当进行故障排查时,我们希望能够快速的进行日志查询和过滤,以便精准的定位并解决问题. ...
- c++模板库(简介)
目 录 STL 简介 ......................................................................................... ...
随机推荐
- cc2530 timer 3 PWM <可调占空比>
前提: 开始用的是 cc2530 timer 1来做PWM的,已经可调占空比了,但是由于硬件的改动,需要用timer 3 和 timer 4 代替.由于调试过程中出了些小问题,于是自己把这个贴出来.关 ...
- android有点纠结的小问题
1.点击一个listview的item,以popupwindow的形式展示一个菜单.popupwindow以动画的形式展现,可一直没有预期的效果 解决方案: popupWindow.setBackgr ...
- Tomcat 配置 Probe 监控
转至:http://9771104.blog.163.com/blog/static/19446622009811112836524/ 手上接触Tomcat的项目越来越多,虽说tomcat的manag ...
- C# 之 获取文件名及拓展名
1.用Path类的方法(最常用) string fullPath = @"\WebSite\Default.aspx"; string filename = System.IO.P ...
- MySql添加用户,新建数据库,用户授权,删除用户,修改密码
转自:http://www.cnblogs.com/fly1988happy/archive/2011/12/15/2288554.html MySql中添加用户,新建数据库,用户授权,删除用户,修改 ...
- Intent实现页面跳转
Intent实现页面跳转: 1. startActivity(intent) 2. startActivityForResult(intent,requestCode); onActivityResu ...
- web项目设计与开发——DBHelper3
本次学习的内容为根据DBHelper对数据库里的数据进行增删改查 具体内容为: 一.编写程序 1.创建工程——Mangage 2.在src目录下创建五个包,分别为DAO,DBHelper,Ent ...
- xsl输出html代码 非闭合
``` </div> <div class="row-fluid"> ···
- .Net 中表达式的转换
.Net 中表达式的转换 如: a>0 && (c>a || a <b ) || (a>b || c>1) 转换后 (((a > 0) a ...
- 怎么关闭InstantRun
Settings → Build, Execution, Deployment → Instant Run and uncheck Enable Instant Run.