用数组实现栈(C++)
发布时间:2020-12-16 09:14:41 所属栏目:百科 来源:网络整理
导读:#include iostream//栈的数组实现using namespace std;#define MAXSIZE 10;templateclass Tclass Stack{public: //默认构造函数 Stack(); Stack(size_t maxElements); Stack(T data[],size_t maxElements); ~Stack(); //入栈 void Push(T data); //出站并返
#include <iostream> //栈的数组实现 using namespace std; #define MAXSIZE 10; template<class T> class Stack { public: //默认构造函数 Stack(); Stack(size_t maxElements); Stack(T data[],size_t maxElements); ~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]; if (arrays == NULL) { cout << "动态分配内存失败"; } } 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] = { 1,2,3,4,5,6 }; Stack<int> s(a,6); s.Pop(); s.Push(7); for (int i = 0; i < 6; i++) { cout << s.Pop() << " "; } cout << endl; } catch (exception e) { cout << e.what() << endl; } system("pause"); return 0; } 来源:c++ 栈的数组实现 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Unity 中XML序列化和反序列化
- c# – 页面中用户控件的异步加载
- flex4访问amfphp之gateway封装类
- cocos2dx 3.2 屏幕适配的理解
- flexview属性表格绑定图层layer时候,怎么排除某些特定的op
- C#向word文档插入新段落及隐藏段落的方法
- mini2440基于qtopia2.2的电子词典ZBEDIC的移植过程
- swift2.0 CASpringAnimation 和 UIView.animateWithDuratio
- ruby-on-rails – Rails SSL问题:(https://example.com)与
- oracle INS-13001 环境不满足最低要求