#include"MyStack.h" #include"Coordinate.h" #include using namespace std; template // 实现模板操作,声明T MyStack::MyStack(int size) { m_iSize = size; m_pBuffer = new T[m_iSize]; m_iTop = 0; } template MyStack::~MyStack() { delete []m_pBuffer; } template bool MyStack::stackEmpty() { return 0 == m_iTop ? true:false // if(m_iTop == 0) } template bool MyStack::stackFull() { return m_iSize == m_iTop ? true:false // >= } template void MyStack::clearStack() { m_iTop = 0; } int MyStack::stackLength() { return m_iTop; } template bool MyStack::push(T elem) { if (stackFull()) { return false; } m_pBuffer[m_iTop] = elem; m_iTop++; return true; } template bool MyStack::pop(T &elem) { if (stackEmpty()) { return false; } m_iTop--; elem = m_pBuffer[m_iTop]; return true; } template void MyStack::stackTraverse(bool isFromButtom) { if (isFromButtom) { for (int i = 0; i < m_iTop; i++) { // m_pBuffer[i].printCoordinate(); cout << m_pBuffer[i]; } } else { for (int i = m_iTop - 1; i >= 0; i--) { // m_pBuffer[i].printCoordinate(); cout << m_pBuffer[i]; } } }