#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. SCO连接AD / SCOM

    SCO安装完成后,下载IP包,打开Deployment Manager注册IP包,并将其部属到Runbook Server SCO IP包下载地址:http://technet.microsoft.c ...

  2. C#-设置窗体在显示器居中显示

    在窗体的属性中查看:StartPosition属性,该属性的设置中有一个"CenterScreen"的选择项,该项就是设置窗体局中显示的.

  3. Android代码中设置背景图片

    //设置背景图片        String picfile= Environment.getExternalStorageDirectory() + "/pdp/pdp.png" ...

  4. 在iOS中怎样创建可展开的Table View?(下)

    接上篇:在iOS中怎样创建可展开的Table View?(上) 展开和合拢 我猜这部分可能是你最期望的了,因为本次教程的目标将会在在部分实现.第一次我们设法让顶层的cell,在它们点击的时候展开或者合 ...

  5. 在CentOS上编译安装PostgreSQL

    http://my.oschina.net/tashi/blog 第一步:准备阶段 获取必需软件包: CentOS中查看是否安装了某个软件的命令:rpm -qa | grep 软件名.which命令可 ...

  6. 十、Socket之UDP编程

    UDP基础知识 UDP(User Datagram Protocol,用户数据报协议)是一个简单的.面向数据报的无连接协议,提供了快速但不一定可靠的传输服务. UDP与TCP相比主要有以下区别. 1. ...

  7. cocos2dx 公告效果

    第一种方法: http://blog.csdn.net/jackystudio/article/details/12991977 [玩转cocos2d-x之十六]滚动字幕和公告 第二种方法: http ...

  8. swfupload操作手册

    SWFUpload SWFUpload 最初是Vinterwebb.se 开发的客户端文件上传工具.它联合javascript和flash,在浏览器中提供一个优于传统上传标签 <input ty ...

  9. php笔记01:php基本语法格式

    1. <?php ....... ?> 2. <script laugnage="php"> ....... </script> 3. < ...

  10. h5拖放-ff的bug

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...