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;}

文件运行结果:
这里写图片描述

原创粉丝点击