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动态申请,这个方便在构造函数当中指定申请多大的内存。