C++算法之 写自己的栈stack 动态申请

来源:互联网 发布:马步芳 知乎 编辑:程序博客网 时间:2024/06/04 18:00

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

0 0