c++ 栈的数组实现
来源:互联网 发布:linux cp mv 编辑:程序博客网 时间:2024/06/08 02:40
/*栈的数组实现*/#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;}
0 0
- 栈的C数组实现
- 栈的C语言 数组实现
- 栈的C语言实现(数组)
- 栈的数组实现(C语言版)
- 数组的实现---C语言
- 动态数组的 C 实现
- C实现数组的基本功能
- 栈的C语言实现(链表和数组)
- c/c++栈与队的数组实现方法
- C语言------栈的初体验(数组实现)
- 栈数组实现实现文件C语言
- 基于数组的队列实现(C语言)
- C语言动态数组的完整实现
- C语言动态数组的完整实现
- C语言中动态数组的实现
- c语言中动态数组的实现
- C语言中动态数组的实现
- C数组实现矩阵的转置
- NYOJ 427 & HDU 1005 Number Sequence(找循环节)
- 黑马程序员_日记59_TreeMap自定义对象练习
- CXF中Web服务请求处理流程
- 第46课时,实践3,小学生算术测试程序加强版
- 指针函数和函数指针,指针常量和常量指针
- c++ 栈的数组实现
- p122第10题
- 马士兵老师推荐的java学习路线
- n个元素顺序进栈,那么出栈的顺序有多少种?
- Max Sum (1003)
- 介绍“Razor”— ASP.NET的一个新视图引擎(落后了好多,需要用这个就了解一下)
- latex 字符笔记
- C#中获取匹配正则表达式的字符
- Android 下获取各个包的信息