C++ 实现链式栈

来源:互联网 发布:怎么下载不了软件 编辑:程序博客网 时间:2024/06/07 09:06

测试环境:vs2010 windows7

stack.hpp

template<class T>class  LinkStack{private:int NodeNum;struct Node  //栈的节点{T data;struct Node *next;};struct Node *pTop;//栈顶public:LinkStack();~LinkStack();void push(T data);//入栈T pop();  //出栈bool isEmpty();void clear();int size();};template<class T> LinkStack<T>::LinkStack(){this->NodeNum = 0;this->pTop = NULL;}template<class T> LinkStack<T>::~LinkStack(){this->clear();}template<class T> int LinkStack<T>::size(){return NodeNum;}template<class T>bool LinkStack<T>::isEmpty(){return pTop == NULL;}template<class T>void LinkStack<T>::clear(){struct Node *pTmp;while(pTop != NULL){pTmp = pTop;pTop = pTop->next;delete pTmp; //释放内存}NodeNum = 0;pTop = NULL;}template<class T>void LinkStack<T>::push(T data){struct Node *node= new Node;node->data = data;node->next = NULL;if(pTop == NULL){pTop = node;}else{node->next = pTop;pTop = node;}NodeNum++;}template<class T>T LinkStack<T>::pop(){struct Node *pTmp;T tmp;if(pTop == NULL){return 0;}else{pTmp = pTop;pTop = pTop->next;tmp = pTmp->data;delete pTmp; //释放内存NodeNum--;return tmp;}}

test.cpp

#include<iostream>#include"stack.hpp"using namespace std;void main(){LinkStack<int>  stack;for(int i=0;i<10;i++){stack.push(i);}while(!stack.isEmpty()){cout<<stack.pop()<<endl;}cin.get();}


0 0
原创粉丝点击