链式栈
2012-04-08 22:59 Rollen Holt 阅读(721) 评论(0) 编辑 收藏 举报StackNode.h
template<typename Type> class LinkStack; template<typename Type> class StackNode{ private: friend class LinkStack<Type>; StackNode(Type dt,StackNode<Type> *next=NULL):m_data(dt),m_pnext(next){} private: Type m_data; StackNode<Type> *m_pnext; };
LinkStack.h
#include "StackNode.h" template<typename Type> class LinkStack{ public: LinkStack():m_ptop(NULL){} ~LinkStack(){ MakeEmpty(); } public: void MakeEmpty(); //make the stack empty void Push(const Type item); //push the data Type Pop(); //pop the data Type GetTop() const; //get the data void Print(); //print the stack bool IsEmpty() const{ return m_ptop==NULL; } private: StackNode<Type> *m_ptop; }; template<typename Type> void LinkStack<Type>::MakeEmpty(){ StackNode<Type> *pmove; while(m_ptop!=NULL){ pmove=m_ptop; m_ptop=m_ptop->m_pnext; delete pmove; } } template<typename Type> void LinkStack<Type>::Push(const Type item){ m_ptop=new StackNode<Type>(item,m_ptop); } template<typename Type> Type LinkStack<Type>::GetTop() const{ if(IsEmpty()){ cout<<"There is no elements!"<<endl; exit(1); } return m_ptop->m_data; } template<typename Type> Type LinkStack<Type>::Pop(){ if(IsEmpty()){ cout<<"There is no elements!"<<endl; exit(1); } StackNode<Type> *pdel=m_ptop; m_ptop=m_ptop->m_pnext; Type temp=pdel->m_data; delete pdel; return temp; } template<typename Type> void LinkStack<Type>::Print(){ StackNode<Type> *pmove=m_ptop; cout<<"buttom"; while(pmove!=NULL){ cout<<"--->"<<pmove->m_data; pmove=pmove->m_pnext; } cout<<"--->top"<<endl<<endl<<endl; }
Test.cpp
#include <iostream> using namespace std; #include "LinkStack.h" int main(){ LinkStack<int> stack; int init[10]={1,3,5,7,4,2,8,0,6,9}; for(int i=0;i<10;i++){ stack.Push(init[i]); } stack.Print(); cout<<stack.Pop()<<endl; stack.Print(); cout<<stack.GetTop()<<endl; stack.Print(); cout<<stack.Pop()<<endl; stack.Print(); stack.MakeEmpty(); stack.Print(); stack.Pop(); return 0; }
==============================================================================
本博客已经废弃,不在维护。新博客地址:http://wenchao.ren
我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他
们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其
实我是一个程序员
==============================================================================