1 没有使用模板的栈实现

 #include <iostream>
#include <string>
using namespace std; class Stack
{
public:
Stack(int size = );
~Stack();
bool isEmpty();
bool isFull();
void push(int data);
int pop();
private:
int* space;
int top; }; Stack::Stack(int size)
{
space = new int(size);
top = ;
}
Stack::~Stack()
{
delete[]space;
}
bool Stack::isEmpty()
{
return top == ;
}
bool Stack::isFull()
{
return top == ;
}
void Stack::push(int data)
{
space[top++] = data;
}
int Stack::pop()
{
return space[--top];
} int main()
{
Stack s();
int i = ;
/*if (!s.isFull())
{
s.push(10);
}*/
while (!s.isFull()&&i<)
{
s.push(i);
i+=;
}
i = ;
while (!s.isEmpty()&&i<)
{
cout << s.pop() << endl;
i += ;
}
cin.get();
return ;
}

2 使用模板以后的栈实现

 #include <iostream>
#include <string>
using namespace std; template<typename T>
class Stack
{
public:
Stack(int size)
{
space = new T[size];
top = ;
}
~Stack();
bool isEmpty();
bool isFull();
void push(T data);
T pop();
private:
T* space;
int top; }; template<typename T>
Stack<T>::~Stack()
{
delete[]space;
}
template<typename T>
bool Stack<T>::isEmpty()
{
return top == ;
}
template<typename T>
bool Stack<T>::isFull()
{
return top == ;
}
template<typename T>
void Stack<T>::push(T data)
{
space[top++] = data;
}
template<typename T>
T Stack<T>::pop()
{
return space[--top];
} int main()
{
Stack<double> s();
if (!s.isFull())
s.push(10.4);
if (!s.isFull())
s.push(10.5);
if (!s.isFull())
s.push(10.6);
if (!s.isFull())
s.push(10.7);
if (!s.isFull())
s.push(10.8);
if (!s.isFull())
s.push(10.9); Stack<string> s1();
if (!s1.isFull())
s1.push("ni");
if (!s1.isFull())
s1.push("hao"); while (!s1.isEmpty())
{
cout << s1.pop() << endl; }
cin.get();
return ;
}

可以其他类型可以自己多敲敲哦

c++函数模板二栈实现的更多相关文章

  1. C++ 函数模板二(函数模板重载)

    //函数模板重载 #include<iostream> using namespace std; /* 函数模板会进行严格的类型匹配,模板类型不提供隐式类型转化 普通函数能够进行自动类型转 ...

  2. C#中的函数式编程:递归与纯函数(二) 学习ASP.NET Core Razor 编程系列四——Asp.Net Core Razor列表模板页面

    C#中的函数式编程:递归与纯函数(二)   在序言中,我们提到函数式编程的两大特征:无副作用.函数是第一公民.现在,我们先来深入第一个特征:无副作用. 无副作用是通过引用透明(Referential ...

  3. C++实验二——函数重载、函数模板、简单类的定义和实现

    一.实验过程 函数重载编程练习 实验要求:编写重载函数add(),实现对int型,double型,complex型数据的加法.在main函数中定义不同类型的数据,调用测试. 代码实现: 先是简单的体验 ...

  4. 【C++】模板简述(二):函数模板

    我们上文讲了,模板的引入,我们发现在某种特殊的情况下,必须得通过模板才能完美的解决问题. 本文就来简述一下函数模板的基本使用. 一.函数模板格式 template<typename Param1 ...

  5. C++(四十二) — 函数模板多态

     1.函数模板(参数多态) 相当于一个函数发生器,参数多态,可以重载. 普通函数和模板函数的本质区别: 普通函数的调用,可以进行隐式的类型转换: 函数模板的调用,使用类型参数化,严格按照类型进行匹配, ...

  6. C++学习笔记2_函数.函数指针.函数模板

    1. 内联函数void printAB(int a,int b){ cout<<(a)<<(b)<<endl;}int main(void){ for(int i= ...

  7. Lua函数之二

    Lua函数之二 Lua中函数的两个重要特性: 1.函数和其他类型(如number.string)一样,可以存放在变量中,也可以存放在table中,可以作为函数的参数,还可以作为函数的返回值. 2.嵌套 ...

  8. [Reprint] C++函数模板与类模板实例解析

    这篇文章主要介绍了C++函数模板与类模板,需要的朋友可以参考下   本文针对C++函数模板与类模板进行了较为详尽的实例解析,有助于帮助读者加深对C++函数模板与类模板的理解.具体内容如下: 泛型编程( ...

  9. C++学习笔记之模板(1)——从函数重载到函数模板

    一.函数重载 因为函数重载比较容易理解,并且非常有助于我们理解函数模板的意义,所以这里我们先来用一个经典的例子展示为什么要使用函数重载,这比读文字定义有效的多. 现在我们编写一个交换两个int变量值得 ...

随机推荐

  1. Toad 使用中遇到的问题

    1:智能提示: 视图-->toad选项-->Editor-->Code Assist-->Toad Insight---->sort pick list alphabet ...

  2. DateTime操作,时间范围,加减

    DB里边存的是char类型数组的时间,例如20151111 12171220000,现在需要把这个时间加减5s,组成 一个时间范围 然后再写存储过程. 想到的办法就是把这个时间先转换成DateTime ...

  3. win7-64bit下基于VMware12.5安装rhel-server-6.3-i386

    /************************************************************************************* 宿主PC:win7-64b ...

  4. Django-ondelete

    on_delete=None, # 删除关联表中的数据时,当前表与其关联的field的行为 on_delete=models.CASCADE, # 删除关联数据,与之关联也删除 on_delete=m ...

  5. 【caffe-windows】 caffe-master 之图片转换成lmdb or leveldb

    前期准备: 文件夹train:此文件夹中按类别分好子文件夹,各子文件夹里存放相应图片 文件夹test:同train,有多少类就有多少个子文件夹 trainlabels.txt : 存的是训练集的标签  ...

  6. 【剑指Offer学习】【面试题62:序列化二叉树】

    题目:请实现两个函数,分别用来序列化和反序列化二叉树. 解题思路 通过分析解决前面的面试题6.我们知道能够从前序遍历和中序遍历构造出一棵二叉树.受此启示.我们能够先把一棵二叉树序列化成一个前序遍历序列 ...

  7. 【BZOJ3041】水叮当的舞步 迭代深搜IDA*

    [BZOJ3041]水叮当的舞步 Description 水叮当得到了一块五颜六色的格子形地毯作为生日礼物,更加特别的是,地毯上格子的颜色还能随着踩踏而改变.为了讨好她的偶像虹猫,水叮当决定在地毯上跳 ...

  8. java CyclicBarrier和wait/notifyAll

    1 CyclicBarrier 多个进程做自己的事情,然后先做完的就等待在CyclicBarrier上,然后最后一个做完的线程到来时会冲破CyclicBarrier,然后执行CyclicBarrier ...

  9. java object monitor

    1 什么是java object monitor 每个java对象头中都有锁状态位标记.java中在使用synchronize同步的时候,肯定是涉及到某个对象的锁.因此,在考虑同步的时候,首先要想到是 ...

  10. windows下使用DOS命令删除大文件

    首先进入DOS命令窗口: 1.进入到将要删除的目录: 执行命令: rmdir /s/q 文件夹名称 2.删除指定文件: 进入文件的目录下,找到要删除的文件名称+扩展名:例如111.jpg执行命令: d ...