c
- #ifndef __STACK__
- #define __STACK__
- class CStack
- {
- int * m_pData;
- int m_nCount;
- int m_nPos;
- public:
- CStack(int nLength);
- ~CStack();
- bool isFull();
- bool isEmpty();
- void push(const int & value);
- bool pop(int &value);
- };
- CStack::CStack(int nLength)
- {
- m_pData = new int[nLength];
- memset(m_pData,0,nLength);
- m_nPos = -1;
- m_nCount = nLength;
- }
- bool CStack::isFull()
- {
- return m_nPos == m_nCount-1;
- }
- bool CStack::isEmpty()
- {
- return m_nPos == -1;
- }
- void CStack::push(const int & value)
- {
- if(!isFull())
- {
- m_pData[++m_nPos] = value;
- }
- }
- bool CStack::pop(int &value)
- {
- if(isEmpty())return false;
- value = m_pData[m_nPos--];
- }
- CStack::~CStack()
- {
- delete m_pData;
- }
- #endif
调用方法如下:
- #include <iostream>
- #include "stack.h"
- int main(int argc, char* argv[])
- {
- CStack stack = 5;
- stack.push(1);
- stack.push(2);
- stack.push(3);
- stack.push(4);
- stack.push(5);
- stack.push(6);
- int c =0;
- stack.pop(c);
- cout << c << endl;
- stack.pop(c);
- cout << c << endl;
- stack.pop(c);
- cout << c << endl;
- stack.pop(c);
- cout << c << endl;
- stack.pop(c);
- cout << c << endl;
- stack.pop(c);
- cout << c << endl;
- getchar();
- }
C++实现栈数据结构
来源: http://www.bubuko.com/infodetail-2316040.html