通用的CMyStack类

来源:互联网 发布:数据运营的书 编辑:程序博客网 时间:2024/06/07 11:33
#include <iostream.h>#include <stdio.h>#include <stdlib.h>template <class T>class CMyStack{private:T *m_pData;int m_iMaxCount;//容量int m_iCount;//元素个数public:CMyStack(int iMaxCount);~CMyStack();bool IsEmpty();bool IsFull();bool Push(const T &iElement);bool Pop(T &iElement);};template <class T>CMyStack<T>::CMyStack(int iMaxCount){m_pData     = new T[iMaxCount];m_iMaxCount = iMaxCount;m_iCount    = 0;}template <class T>CMyStack<T>::~CMyStack(){delete []m_pData;}template <class T>bool CMyStack<T>::IsEmpty(){return m_iCount == 0;}template <class T>bool CMyStack<T>::IsFull(){return m_iCount == m_iMaxCount;}template <class T>bool CMyStack<T>::Push(const T &iElement){if(IsFull())return false;m_pData[m_iCount++]=iElement;printf("Push:%d\n",iElement);return true;}template <class T>bool CMyStack<T>::Pop(T &iElement){if(IsEmpty())return false;iElement=m_pData[--m_iCount];printf("Pop:%d\n",iElement);return true;}class CA{public: int m_ia;CA(int ia=0){m_ia = ia;}};int main(){int i;CMyStack<int> stack(8);//用CMyStack<int>while(stack.Push(rand()));printf("\nIsEmpty? %d, IsFull? %d\n\n",stack.IsEmpty(),stack.IsFull());while(stack.Pop(i));printf("\nIsEmpty? %d, IsFull? %d\n",stack.IsEmpty(),stack.IsFull());//CMyStack<CA>测试printf("======================\n");CMyStack<CA> st(5);for(i=0;i<5;i++)     st.Push(CA(i));CA a;for(i=0;i<5;i++){st.Pop(a);}return 0;

0 0
原创粉丝点击