#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. 有关字符串作为URL的 UTF8编码和解码的问题。

    当字符串要作为url访问的时候,我们对字符串中的中文非常头疼,这时候需就需要使用 UTF8来编码: //使用 stringByAddingPercentEscapesUsingEncoding 方法来 ...

  2. sql函数:汉字转换为拼音

    sql数据库自定义一个函数把下面代码写进去 功能是得到汉字拼音首字母create function fun_getPY(@str nvarchar(4000)) returns nvarchar(40 ...

  3. java大数总结【转】

    java大数(2013长春网络赛)--hdu4762总结一下:1.java提交类要写Main.2.读取大数. Scanner read=new Scanner(System.in); BigInteg ...

  4. 信号之sigsuspend函数

    更改进程的信号屏蔽字可以阻塞所选择的信号,或解除对它们的阻塞.使用这种技术可以保护不希望由信号中断的代码临界区.如果希望对一个信号解除阻塞,然后pause等待以前被阻塞的信号发生,则又将如何呢?假定信 ...

  5. mysqldump 的一些使用参数

    备份数据库#mysqldump 数据库名 >数据库备份名 #mysqldump -A -u用户名 -p密码 数据库名>数据库备份名 #mysqldump -d -A --add-drop- ...

  6. java_Hashtable实例

    package ming; import java.util.Hashtable; class D { int count; public D(int count) { this.count = co ...

  7. C#_delegate EndInvoke

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. WinServer 之 发布WebService后调用出现" The test form is only available for requests from the local machine. "

    当您尝试从远程计算机访问 Web 服务时,不会显示“调用”按钮.并且,您会收到以下错误信息: The test form is only available for requests from the ...

  9. python--字符工厂函数dict()

    字符工厂函数str() class str(object): """ str(object='') -> str str(bytes_or_buffer[, enc ...

  10. 深入浅出ECharts系列(一)地图+散点图

    深入浅出ECharts系列(一) 目标 本次教程的目标是实现“微博签到点亮中国”散点图,实现结果如图: 2. 准备工作 a)         首先下载ECharts插件,你可以根据自己的实际需求选择你 ...