#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++模板实现的更多相关文章

  1. C 栈顺序存储

    // seqstack.h #ifndef _MY_SEQSTACK_H_ #define _MY_SEQSTACK_H_ typedef void SeqStack; SeqStack* SeqSt ...

  2. C++:栈(stack)的模板类实现

    1.基本概念 栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out) 只能在栈顶进行插入和删除操作 压栈(或推入.进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹 ...

  3. C++ 数据结构模板 队列 栈 动态链表 模板 Queue Stack List

    C++数据结构模板,可以实现基本功能,用法和stl差不多,比如Q.pop();Q.push(a);Q.front();...... (由于动态链表用的不多,若有错误望各位大神不吝赐教:) 队列: cl ...

  4. javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例

    栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...

  5. 用栈来递归 模板 honoi

    用栈来模拟递归的技巧 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> #include& ...

  6. 栈(stack),C++模板实现

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  7. C语言实现栈(顺序存储方式)

    #include <stdio.h> #include <stdlib.h> //提供malloc()原型 #include <stdbool.h> //提供tru ...

  8. 单调栈高封装模板hia hia hia

    这个单调栈应该可以了,舒服舒服 #include <bits/stdc++.h> using namespace std; #define limit (400000 + 5)//防止溢出 ...

  9. 应用编排服务之ELK技术栈示例模板详解

    日志对互联网应用的运维尤为重要,它可以帮助我们了解服务的运行状态.了解数据流量来源甚至可以帮助我们分析用户的行为等.当进行故障排查时,我们希望能够快速的进行日志查询和过滤,以便精准的定位并解决问题. ...

  10. c++模板库(简介)

    目 录 STL 简介 ......................................................................................... ...

随机推荐

  1. 放弃移动版Flash而非AIR

    之前看到标题为"Adobe放弃移动版flash"的新闻,我很震惊,为何Adobe会放弃这么一个大市场呢? 这样无疑打击原来在flash的开发上的应用,我想很多人和我想的一样,fla ...

  2. 【09】绝不在构造和析构过程中调用virtual方法

    1.绝不在构造和析构过程中调用virtual方法,为啥? 原因很简单,对于前者,这种情况下,子类专有成分还没有构造,对于后者,子类专有成分已经销毁,因此调用的并不是子类重写的方法,这不是程序员所期望的 ...

  3. mysql下命令行执行sql脚本

    1. 登录mysql mysql -uroot -p 2. 执行脚本 mysql>use dbname; mysql>source /home/db/xx.sql

  4. Update操作浅析,一定是先Delete再Insert吗?

    Update操作一定是先Delete再Insert吗? Update在数据库中的执行是怎么样的?“Update操作是先把数据删除,然后再插入数据”.在网上看了很多也都是这么认为的.但在查阅到一些不同看 ...

  5. HDU 5477 A Sweet Journey 水题

    A Sweet Journey Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...

  6. hdu 5464 Clarke and problem dp

    Clarke and problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php ...

  7. nginx利用image_filter动态生成缩略图

    转自:http://www.nginx.cn/2160.html "我如今是有些图片须要生成缩略图.这个如今加了image_filter这个已经实现了.但我不知道怎么样才干訪问我上传的原图& ...

  8. 深刻理解Python中的元类(metaclass)

    译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得 ...

  9. hibernate3整合spring2时hibernate即用注解又用配置文件情况时spring配置文件的配置写法

    hibernate只用注解时,spring的配置文件的配置如下 <bean id="dataSource" class="org.apache.commons.db ...

  10. Javascript之基本包装类型

    一.基本包装类型概述 var box = 'Mr. Lee';//定义一个字符串 var box2 = box.substring(2);//截掉字符串前两位 alert(box2);//输出新字符串 ...