栈的C++实现
来源:互联网 发布:开通淘宝店铺要钱吗 编辑:程序博客网 时间:2024/06/08 10:04
以下是数据结构中栈的C++实现,如有需要,请访问我的Github获取完整源码。
//栈类的定义(Stack.h)class Stack { public: Stack(int size); //构造函数,分配内存,初始化栈空间,设置栈容量(size不变),栈顶 ~Stack(); //析构函数,释放空间 bool stackEmpty(); //栈判空,为空返回true,非空返回false bool stackFull(); //栈判满,为满返回true,非满返回false void clearStack(); //清空栈中数据 int stackLength(); //获取栈中现有元素个数 bool push(char element); //元素入栈,栈顶上升 bool pop(char &element); //元素出栈,栈顶下降 //char Stack::pop() //元素出栈的另一种定义 void stackTraverse(bool isFromButtom);//遍历栈中所有元素 public: char *m_pBuffer; //栈空间指针,使用new开辟新的栈空间,用这个指针指向这段空间 int m_iSize; //栈容量,等于size的值,不变 int m_iTop; //栈顶,也代表栈中现有的元素个数 };//类中各成员函数的实现(Stack.cpp)#include<iostream>#include<stdio.h>#include"Stack.h"using namespace std;Stack::Stack(int size){ m_iSize = size; m_pBuffer = new char[size]; //申请空间,大小为size m_iTop = 0; //栈顶为0,即为空栈}Stack::~Stack(){ delete []m_pBuffer; m_pBuffer = NULL;}bool Stack::stackEmpty(){ if(m_iTop == 0) //if(0 == m_iTop)推荐使用,会检查语法 { return true; } else { return false; }}bool Stack::stackFull(){ if(m_iTop == m_iSize) //if(m_iTop >= m_iSize) 也可 { return true; } else { return false; }}void Stack::clearStack(){ m_iTop = 0; //栈中元素无效,新元素会覆盖掉旧元素}int Stack::stackLength(){ return m_iTop;}bool Stack::push(char element) //先判满{ if(stackFull()) { return false; } m_pBuffer[m_iTop] = element; m_iTop++; //下一个要入栈的位置 return true;}bool Stack::pop(char &element) //推荐bool类型{ if(stackEmpty()) { return false; } m_iTop--; //保证top中有元素 element = m_pBuffer[m_iTop]; //m_iTop--; return true;}/*char Stack::pop() //char类型的出栈{ if(stackEmpty()) { throw 1; } m_iTop--; //保证top中有元素 return m_pBuffer[m_iTop];}*/void Stack::stackTraverse(bool isFromButtom) //当栈中元素较为复杂时,需要使用visit()函数访问 { if (isFromButtom) { for(int i = 0; i < m_iTop; i++) //从栈底向栈顶遍历 { cout << m_pBuffer[i] << endl; } } else { for(int i = m_iTop; i >= 0; i--) //从栈顶向栈底遍历 { cout << m_pBuffer[i] << endl; } }}
阅读全文
0 0
- 栈的C实现
- 【c++】栈的实现
- 栈的C语言实现
- 顺序栈的实现 c
- 栈的C语言实现
- C语言栈的实现
- 栈的实现(C++)
- C/C++栈的实现
- 栈的C语言实现
- c链式栈的实现
- 顺序栈的C实现
- 链式栈的C实现
- 栈的C数组实现
- 栈的C语言实现
- 栈的c语言实现
- [c++]栈模板的实现
- 栈的C语言实现
- 动态栈的实现(C++)
- 实现图片的拖拽缩放功能
- Sublime Text编辑器如何显示顶部的菜单栏
- Android开发对网络缓存的理解
- 2.4g无线跳频(三)
- Problem 2150 Fire Game
- 栈的C++实现
- 大数据书籍推荐
- NYOJ 1249 物资调度(DFS+剪枝)
- 算法复杂度
- hdu 1907 John(Nim博弈)
- CSU-ACM2017暑假集训比赛7 C
- jquery事件绑定和事件委托
- 集训8.23
- python实现带l1正则化的逻辑回归,采用sgd。