数据结构--栈(C++)

本文介绍了如何使用C++实现一个自定义的栈数据结构,包括构造函数、析构函数、判断栈空、栈满、清空栈、获取栈长度、元素入栈、出栈及遍历栈元素等功能。示例代码展示了栈的基本操作和使用。
摘要由CSDN通过智能技术生成

  //MyStack.h

#ifndef MYSTACK_H
#define MYSTACK_H


class MyStack
{
    public:
        MyStack(int size);
        ~MyStack();
        bool stackEmpty();
        bool stackFull();
        void clearStack();
        int stackLength();
        bool push(char elem);
        bool pop(char &elem);
        void stackTraverse(bool isFromButtom);
    private:
        char *m_pBuffer;
        int m_iSize;
        int m_iTop;

};

#endif // MYSTACK_H

//MyStack.cpp

#include "MyStack.h"
#include <iostream>
using namespace std;

MyStack::MyStack(int size)
{
   m_iSize = size;
   m_pBuffer = new char[size];
   m_iTop = 0;
}

MyStack::~MyStack()
{
    delete []m_pBuffer;
}
bool MyStack::stackEmpty()
{
    if(0==m_iTop) //if(m_iTop == 0)
    {
        return true;
    }
    return false;
}

bool MyStack::stackFull()
{
    if(m_iTop == m_iSize) //>=
    {
        return true;
    }
    return false;
}

void MyStack::clearStack()
{
    m_iTop = 0;
}
int MyStack::stackLength()
{
    return m_iTop;
}

bool  MyStack::push(char elem)
{
    if(stackFull())
    {
        return false;
    }
    m_pBuffer[m_iTop] = elem;
    m_iTop++;
    return true;
}
/*char MyStack::pop()
{
    if(stackEmpty())
    {
        throw 1;
    }
    else
    {
        m_iTop--;
        return m_pBuffer[m_iTop];
    }
}*/
bool MyStack::pop(char &elem)
{
    if(stackEmpty())
    {
        return false;
    }
    m_iTop--;
    elem = m_pBuffer[m_iTop];
    return true;
}
void MyStack::stackTraverse(bool isFromButtom)
{
    if(isFromButtom){
        for(int i = 0;i<m_iTop;i++)
        {
            cout<<m_pBuffer[i]<<",";
        }
    }else{
        for(int i= m_iTop-1;i>=0;i--)
        {
            cout<<m_pBuffer[i]<<",";
        }
    }
}

//main.cpp

#include <iostream>
#include "MyStack.h"
using namespace std;

int main()
{
    MyStack *pStack = new MyStack(5);
    pStack->push('h');
    pStack->push('e');
    pStack->push('l');
    pStack->push('l');
    pStack->push('o');
    pStack->stackTraverse(false);
    char elem = 0;
    pStack->pop(elem);
    cout<<endl;
    cout<<elem<<endl;
   //pStack->clearStack();
    cout<<endl;
    cout<<pStack->stackLength()<<endl;
    if(pStack->stackEmpty())
    {
        cout<<"栈为空"<<endl;
    }
    if(pStack->stackFull())
    {
        cout<<"栈为满"<<endl;
    }
    delete pStack;
    pStack = NULL;
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值