myStack。h
#pragma once //typedef int TYPE; template<typename TYPE> class myStack { TYPE* m_pData;//用new在堆上动态建立 int m_nTop; int m_nCount; public: bool isFull() { return m_nTop+1 >= m_nCount; } bool isEmpty() { if (m_nTop < 0) { return true; } else { return false; } } void push(const TYPE &data) { if (isFull()) { return; } m_pData[++m_nTop] = data; } bool pop(TYPE& t) { if (isEmpty()) { return false; } t = m_pData[m_nTop]; m_nTop--; return true; } myStack(int nCount = 8); ~myStack(); };
myStack。cpp
#include "stdafx.h" #include "myStack.h" template<typename TYPE> myStack<TYPE>::myStack(int nCount) //缺省参数值只在头文件当中出现 { m_nCount = nCount; m_pData = new TYPE[nCount]; m_nTop = -1; } template<typename TYPE> myStack<TYPE>::~myStack(void) { delete []m_pData; }
main.cpp
// Stack2.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "myStack.h" #include "myStack.cpp" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { myStack<int> stack(4); int i = 0; while (i < 4) { stack.push(i); ++i; } int t; while (stack.pop(t)) { cout<<t<<endl; } getchar(); return 0; }
上次是用数组直接申请,这个是用new动态申请,这个方便在构造函数当中指定申请多大的内存。
时间: 2024-10-07 14:10:38