生活随笔
收集整理的這篇文章主要介紹了
链栈 尹成
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://blog.csdn.net/itcastcpp/article/details/39271661
今天,我們一起用C++寫鏈棧,具體如下。
LinkStack.h具體內容:
[cpp]?view plain
?copy #include?"StackNode.h"?? ?? template<typename?Type>?class?LinkStack{?? public:?? ????LinkStack()?:m_ptop(NULL){}?? ????~LinkStack(){?? ????????MakeEmpty();?? ????}?? ?? public:?? ????void?MakeEmpty();????????????? ????void?Push(const?Type?item);??? ????Type?Pop();??????????????????? ????Type?GetTop()?const;?????????? ????void?Print();????????????????? ?? ????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;?? }??
StackNode.h具體內容:
[cpp]?view plain
?copy 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;?? };??
main.cpp具體內容:
[cpp]?view plain
?copy #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();?? ????cin.get();?? ????return?0;?? }??
運行效果如圖1所示:
?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? 圖1?運行效果
總結
以上是生活随笔為你收集整理的链栈 尹成的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。