龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++链栈模板应用代码解读

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
我们今天将会为大家详细介绍一下有关 C++ 链栈模板的基本操作方法。希望刚刚基础这款语言的朋友们可以通过对这篇文章的解读,充分的掌握这方面的应用技巧,以方便我们在实际应

我们今天将会为大家详细介绍一下有关C++链栈模板的基本操作方法。希望刚刚基础这款语言的朋友们可以通过对这篇文章的解读,充分的掌握这方面的应用技巧,以方便我们在实际应用中熟练应用。

C++链栈模板声明

  1. template <class T> 
  2. struct StackNode  
  3. {  
  4. T typeData;  
  5. StackNode *nextNode;  
  6. };  
  7. template <class T> 
  8. class DZ_Stack   
  9. {  
  10. public:  
  11. bool Push(const T data);  
  12. bool Pop(T& data);   
  13. bool Peek(T& data);  
  14. bool IsEmpty();   
  15. DZ_Stack();  
  16. virtual ~DZ_Stack();  
  17. private:  
  18. StackNode<T> *pStackTop;  
  19. int iNodeCount;  
  20. }; 

C++链栈模板实现

  1. template <class T> 
  2. DZ_Stack<T>::DZ_Stack()  
  3. {  
  4. pStackTop=NULL;  
  5. iNodeCount=0;  
  6. }  
  7. template <class T> 
  8. DZ_Stack<T>::~DZ_Stack()  
  9. {  
  10. while(!IsEmpty())  
  11. {  
  12. StackNode<T> *pStackNodepStackTop;  
  13. pStackToppStackTop=pStackTop->nextNode;  
  14. delete (pStackNode);  
  15. pStackNode=NULL;  
  16. }  
  17. pStackTop=NULL;  
  18. }  
  19. template <class T> 
  20. bool DZ_Stack<T>::Push(const T data)  
  21. {   
  22. StackNode<T> *pStackNode=new StackNode<T>;  
  23. if( NULL == pStackNode )   
  24. return false;  
  25. pStackNode->typeData=data;  
  26. pStackNode->nextNode=pStackTop;  
  27. pStackTop=pStackNode;  
  28. iNodeCount++;  
  29. return true;  
  30. }  
  31. template <class T> 
  32. bool DZ_Stack<T>::Pop(T& data)  
  33. {   
  34. if ( IsEmpty() )  
  35. return false;  
  36. data=pStackTop->typeData;  
  37. StackNode<T> *pStackNodepStackTop;  
  38. pStackToppStackTop=pStackTop->nextNode;  
  39. delete (pStackNode);  
  40. iNodeCount--;  
  41. return true;   
  42. }  
  43. template <class T> 
  44. bool DZ_Stack<T>::Peek(T& data)  
  45. {   
  46. if (IsEmpty())  
  47. return false;  
  48. data=pStackTop->typeData;  
  49. return true;   
  50. }  
  51. template <class T> 
  52. bool DZ_Stack<T>::IsEmpty()  
  53. {   
  54. if ( NULL == pStackTop )  
  55. return true;  
  56. else  
  57. return false;  
  58. }  
  59. #endif // !defined(AFX_DZ_STACK_H__10036803_D752_4EF7_
    852D_DD6B377D7AB9__INCLUDED_) 

以上就是对C++链栈模板的相关介绍。

精彩图集

赞助商链接