c++ 栈的数组实现
2015-04-18 21:39
176 查看
/* 栈的数组实现 */ #include<iostream> using namespace std; #define MAXSIZE 10; template<class T> class Stack { public: //默认构造函数 Stack(); Stack(size_t maxElements); Stack(T data[],size_t maxElments); ~Stack(); //入栈 void Push(T data); //出栈并返回 T Pop(); //返回栈顶元素 T Top(); //判断是否为空栈 bool isEmpty(); //栈是否已满 bool isFull(); //清空栈 void Clear(); //获得栈里元素的个数 size_t GetSize(); private: //栈标指示器 size_t top; //数组 T *arrays; //栈的容量 size_t maxSize; }; template<class T> Stack<T>::Stack(): maxSize(MAXSIZE),top(-1) { arrays=new T[maxSize]; if(arrays==NULL) cout<<"动态分配内存失败"; } template<class T> Stack<T>::Stack(size_t maxElements): maxSize(maxElements),top(-1) { arrays=new T[maxSize];//创建存储栈的数组 } template<class T> Stack<T>::Stack(T data[],size_t maxElements): maxSize(maxElements),top(-1) { arrays=new T[maxSize];//创建存储栈的数组 for(size_t i=0;i<maxSize;i++) { arrays[i]=data[i]; } top+=maxSize; } template<class T> Stack<T>::~Stack() { delete[] arrays; } template<class T> void Stack<T>::Push(T data) { if(isFull()) { throw runtime_error("Full stack"); } else { top++;//指向栈顶 arrays[top]=data; } } template<class T> T Stack<T>::Pop() { if(isEmpty()) { throw runtime_error("No elements in the stack"); } else { T data=arrays[top]; top--; return data; } } template<class T> T Stack<T>::Top() { if(isEmpty()) { throw runtime_error("No elements in the stack"); } else { return arrays[top]; } } template<class T> bool Stack<T>::isEmpty() { return top==-1; } template<class T> bool Stack<T>::isFull() { return top==maxSize-1; } template<class T> void Stack<T>::Clear() { while (top!=-1) { top--; } } template<class T> size_t Stack<T>::GetSize() { return top+1; } int main() { /*别忘了捕获异常*/ try { /*测试*/ int a[6]={2,4,3}; Stack<int> s(a,6); s.Pop(); s.Push(5); for(int i=0;i<6;i++) cout<<s.Pop()<<" "; } catch(exception e) { cout<<e.what()<<endl; } cout<<endl; system("pause"); return 0; }
相关文章推荐
- [转]C++实现动态数组
- 一维数组的实现(Array, C++版)
- AES加解密int数组——Java C++实现
- C++ 实现动态定义三维内的数组
- 用最简单的方法实现---C++输入10个数存到数组,找出最小值并与第一个元素交换
- 【Algothrim】 c++ 动态增长数组实现
- 最大子数组问题-暴力求解-c++代码实现及运行实例结果
- C++实现数组最大堆排序
- 雇佣问题随机排列数组(permuteBySorting)-c++代码实现及运行实例结果
- C++实现数组的排序/插入重新排序/以及逆置操作详解
- 数据结构图文解析之:数组、单链表、双链表介绍及C++模板实现
- c++知识点---函数模板实现求数组的最大值
- C++用数组和链表分别实现Stack
- 数组、单链表和双链表介绍 和 双向链表的C/C++/Java实现
- C++实现数组大小运算符dimensionof()
- C++动态数组实现队列
- 冒泡排序的C++实现及随机数组的产生方法
- c/c++ 实现简单的数组表-Zre0
- 剑指offer第三十四题【数字在排序数组中出现的次数】c++实现
- c++用二维数组实现多个字符数组的长度变换(微难一些)