c++栈的实现
来源:互联网 发布:友邦群发软件 垃圾 编辑:程序博客网 时间:2024/04/30 17:48
简单数据类型的栈实现:先入后出(后入先出),LIFO,
/********************************//*文件名称:charStack.h *//*文件内容:定义char类型的栈的类*//********************************/#ifndef CHARSTACK_H#define CHARSTACK_Hclass Stack{public: Stack(int size);//初始化栈 ~Stack();//析构函数:释放栈的内存 bool stackEmpty();//判断栈是否为空 bool stackFull();//判断栈是否为满 int stackSize();//获取栈的元素个数 bool inStack(char element);//元素入栈 bool outStack(char& element);//元素出栈 void printStack(bool isFromBottom);//打印栈元素private: char* m_pStack;//声明栈的内存 int m_iSize;//声明栈的内存总长度 int m_iTop;//声明栈顶};#endif
//文件名称:charStack.cpp#include "charStack.h"#include <stdio.h>#include <iostream>using namespace std;Stack::Stack(int size)//初始化栈{ m_pStack=new char[size]; m_iSize=size; m_iTop=0;}Stack::~Stack()//析构函数:释放栈的内存{ delete []m_pStack; m_pStack=NULL;//NULL有效,添加头文件#include <stdio.h>}bool Stack:: stackEmpty()//判断栈是否为空{ if (0==m_iTop) { return true; } return false;}bool Stack::stackFull()//判断栈是否为满{ if (m_iTop==m_iSize) { return true; } return false;}int Stack::stackSize()//获取栈的元素个数{ return m_iTop;}bool Stack::inStack(char element)//元素入栈{ if (stackFull()) { return false; } else { m_pStack[m_iTop]=element; m_iTop++; return true; }}bool Stack::outStack(char& element)//元素出栈{ if (stackEmpty()) { return false; } else { m_iTop--; element=m_pStack[m_iTop]; return true; }}void Stack::printStack(bool isFromBottom)//打印栈元素{ if (isFromBottom) { for (int i=0;i<m_iTop;i++)//自栈底到栈顶打印 { cout<<m_pStack[i]<<" "; } } else { for (int i=m_iTop-1;i>=0;i--)//自栈顶到栈底打印 { cout<<m_pStack[i]<<" "; } } cout<<endl;}
//main.cpp#include "charStack.h"int main(){ Stack stack(4); stack.inStack('a'); stack.inStack('b'); stack.inStack('c'); stack.inStack('d'); char e; stack.outStack(e); stack.inStack('f'); stack.printStack(true); stack.printStack(false); return 0;}
文件运行结果:
阅读全文
0 0
- 栈的C实现
- 【c++】栈的实现
- 栈的C语言实现
- 顺序栈的实现 c
- 栈的C语言实现
- C语言栈的实现
- 栈的实现(C++)
- C/C++栈的实现
- 栈的C语言实现
- c链式栈的实现
- 顺序栈的C实现
- 链式栈的C实现
- 栈的C数组实现
- 栈的C语言实现
- 栈的c语言实现
- [c++]栈模板的实现
- 栈的C语言实现
- 动态栈的实现(C++)
- 自定义view-drawText
- 警告: A docBase has been specified, and will be ignored
- 简单的打折计算
- 不让EditText自动获取焦点
- 机器学习实战学习笔记(四)分类—Logistic回归(python3实现)
- c++栈的实现
- C# 运算符重载
- java 中 ajax跨域
- C++11 lambda 表达式解析
- K邻近算法
- 查找一个字符串中两个相同的最大的子串
- Open Source Software
- 防止表单重复提交
- 解读《“三板斧”-阿里巴巴管理之道》| 余歌