上一篇用链表实现了stack,这篇我们采用数组来存储数据,数组更容易理解,直接贴代码

第一、代码实现

 #pragma once
#include <iostream>
using namespace std;
template <typename T> class StackArray {
public:
StackArray(int size) {
this->top = -;
this->maxSize = size;
elements = new T[size];
}
~StackArray() {
delete [] elements;
}
bool push(T t);
T pop();
bool isEmpty();
void print(); private:
int top = -;
int maxSize;
T* elements; }; template<typename T>
bool StackArray<T>::push(T data) {
if (top==maxSize)
{
return false;
}
elements[++top] = data;
return true;
} template<typename T>
T StackArray<T>::pop() {
if (top==-)
{
exit(-);
}
return elements[top--];
} template<typename T>
bool StackArray<T>::isEmpty() {
return top == -;
} template<typename T>
void StackArray<T>::print() {
int loop = top;
while (loop>=)
{
cout << elements[loop] << endl;
loop--;
}
}

第二、测试运行

 #include "pch.h"
#include "StackArray.h"
#include <iostream>
using namespace std; int main()
{
StackArray<int> stack();
stack.push();
stack.push();
stack.push();
stack.push();
stack.pop();
stack.push(); stack.print(); std::cout << "Hello World!\n";
}

最新文章

  1. u-boot源码分析之C语言段
  2. MVC的基类
  3. 分布式架构中一致性解决方案——Zookeeper集群搭建
  4. Hibernate的映射组件属性
  5. MySQL: LEAVE Statement
  6. C语言初学者代码中的常见错误与瑕疵(14)
  7. 【转】Sublime text 3 中文文件名显示方框怎么解决
  8. 20150414---ListView简介(web)
  9. 在iptables和selinux中放行smb服务
  10. EF6操作Sqlite数据库的项目兼容性问题
  11. 云计算-openstack基础构架以及服务方式详解
  12. 动手搭建第一个小程序音视频Demo
  13. VMware workstation pro 15 安装Ubuntu(图文教程)
  14. python3模块: os
  15. kepware http接口 nodejs开发
  16. 2017-2018-2 20165207 实验四《Android开发基础》实验报告
  17. android周期性任务
  18. 利用Spring MVC 上传图片文件
  19. git下载和上传项目
  20. CSS3 线性渐变linear-gradient

热门文章

  1. phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接
  2. 编写configure.ac
  3. RxJava 1.x 笔记:过滤型操作符
  4. python函数作用域
  5. java数组实现简单的DVD管理
  6. 02-C与OC语言的一些小知识
  7. try...except包含try...finally方法
  8. BZOJ2555 SubString【后缀自动机+LCT】
  9. Hadoop常见错误问题及解决方法总结二
  10. decorator and @property