#ifndef__STACK__#define__STACK__classCStack{int*m_pData;intm_nCount;intm_nPos;public:CStack(intnLength);~CStack();boolisFull();boolisEmpty();voidpush(constint&value);boolpop(int&value);};CStack::CStack(intnLength){//创建栈类时,确定其大小m_pData=newint[nLength];memset(m_pData,0,nLength);m_nPos=-1;m_nCount=nLength;//用来判断栈是否满}boolCStack::isFull(){returnm_nPos==m_nCount-1;}boolCStack::isEmpty(){returnm_nPos==-1;}voidCStack::push(constint&value){if(!isFull()){m_pData[++m_nPos]=value;}}boolCStack::pop(int&value){if(isEmpty())returnfalse;value=m_pData[m_nPos--];returntrue;}CStack::~CStack(){deletem_pData;}#endif

调用方法如下:

#include<iostream>#include"stack.h"intmain(intargc,char*argv[]){CStackstack=5;stack.push(1);stack.push(2);stack.push(3);stack.push(4);stack.push(5);stack.push(6);intc=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();}