顺序栈C++实现
2021/12/9 22:19:40
本文主要是介绍顺序栈C++实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
顺序栈C++实现
myStack.h
#pragma once #include<iostream> using namespace std; #define MAXSIZE 100 #include<string> template<typename T> class myStack { public: //栈的初始化 myStack(); myStack(const myStack& s); //判断栈是否为空 bool isEmpty(); //求栈的长度 int size(); //获取栈顶元素 T topValue(); //打印栈中元素(逆序) void printElem(); //清空栈 void clear(); //入栈 void push(T data); //出栈 void pop(); //栈销毁 ~myStack(); //运算符重载 myStack<T>& operator=(myStack<T>& ms); private: T *base; T *top; int stacksize; }; //=运算符重载 template<typename T> myStack<T>& myStack<T>::operator=(myStack<T>& ms) { ms.top -= ms.stacksize; for (int i = 0; i < ms.stacksize; i++) { *top = *ms.top; ms.top++; top++; } this->stacksize = ms.stacksize; return *this; } //栈的初始化 template<typename T> myStack<T>::myStack() { base = new T[MAXSIZE]; top = base; stacksize = 0; } template<typename T> myStack<T>::myStack(const myStack& s) { base = new T[MAXSIZE]; top = base; T *temp; temp = s.top; temp -= s.stacksize; for (int i = 0; i < s.stacksize; i++) { *top = *temp; temp++; top++; } this->stacksize = s.stacksize; } //判断栈是否为空 template<typename T> bool myStack<T>::isEmpty() { if (base == top) return true; else return false; } //求栈的长度 template<typename T> int myStack<T>::size() { return stacksize; } //获取栈顶元素 template<typename T> T myStack<T>::topValue() { return *(top - 1); } //打印栈中元素(逆序) template<typename T> void myStack<T>::printElem() { if (!isEmpty()) { for (int i = 1; i <= stacksize; i++) { cout << *(top - i) << " "; } cout << endl; } else { cout << "栈为空!" << endl; } } //清空栈 template<typename T> void myStack<T>::clear() { stacksize = 0; top = base; cout << "清楚成功\n"; } //入栈 template<typename T> void myStack<T>::push(T data) { if (top - base != MAXSIZE) { *top++ = data; stacksize++; cout << "添加成功\n"; } else { cout << "栈已满,插入失败!" << endl; } } //出栈 template<typename T> void myStack<T>::pop() { top--; stacksize--; cout << "出栈成功\n"; } //栈销毁 template<typename T> myStack<T>::~myStack() { delete[] base; }
这篇关于顺序栈C++实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享
- 2024-12-25flutter项目 as提示Cannot resolve symbol 'embedding'提示什么意思?-icode9专业技术文章分享
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享