具体实现代码@数据结构探险—栈篇 2-4
有需要的自取。
file:MyStack.hpp #ifndef MyStack_hpp #define MyStack_hpp #includeclass MyStack{ public: MyStack(int size); ~MyStack(); bool stackFull(); bool stackEmpty(); void clearStack(); int stackLength(); bool push(char elem); bool pop(char &elem); void stackTraverse(bool isFromBottom); private: char *m_pBuffer; int m_iSize; int m_iTop; }; #endif
file:MyStack.cpp #include "MyStack.hpp" #includeusing namespace std; MyStack::MyStack(int size){ m_iSize = size; m_pBuffer = new char[m_iSize]; m_iTop = 0; } MyStack::~MyStack(){ delete []m_pBuffer; m_pBuffer = NULL; } bool MyStack::stackFull(){ return m_iTop==m_iSize?true:false; } bool MyStack::stackEmpty(){ return m_iTop==0?true:false; } void MyStack::clearStack(){ m_iTop = 0; } int MyStack::stackLength(){ return m_iTop; } bool MyStack::push(char elem){ if(stackFull()){ return false; } else{ m_pBuffer[m_iTop] = elem; m_iTop++; return true; } } bool MyStack::pop(char &elem){ if(stackEmpty()){ return false; } else{ m_iTop--; elem = m_pBuffer[m_iTop]; return true; } } void MyStack::stackTraverse(bool isFromBottom){ if(isFromBottom){ for(int i =0;i < m_iTop;i++) { cout << m_pBuffer[i] << endl; } } else{ for(int i = m_iTop-1;i >=0;i--){ cout << m_pBuffer[i] << endl; } } }
file demo.cpp #include#include #include "MyStack.hpp" using namespace std; int main(void){ MyStack *pStack = new MyStack(5); pStack->push('a'); pStack->push('e'); pStack->push('i'); pStack->push('o'); pStack->push('u'); pStack->stackTraverse(true); char elem = 0; pStack->pop(elem); cout << elem << endl; cout << pStack->stackLength() << endl; pStack->stackTraverse(true); pStack->clearStack(); if(pStack->stackEmpty()){ cout << "栈为空" << endl; } if(pStack->stackFull()){ cout << "栈为满" << endl; } delete pStack; pStack = NULL; }



