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

开发 后端
我们今天将会通过对这篇文章中的一段代码的解读分别为大家介绍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++链栈模板的相关介绍。

【编辑推荐】

  1. C++常量引用正确应用方法
  2. C++函数模板基本概念讲述
  3. C++标识符命名规则相关应用技巧分享
  4. C++构造函数如何进行初始化
  5. C++创建Web服务相关方法剖析
责任编辑:曹凯 来源: 博客园
相关推荐

2010-02-06 16:59:19

C++ kmp算法模板

2010-02-03 15:58:51

C++ timer

2010-02-04 09:33:08

C++指针重载

2010-02-04 13:45:36

C++类模板

2010-02-05 16:46:58

C++ TinyXml

2023-12-06 13:48:00

C++代码

2010-02-04 16:07:39

C++回调函数

2010-02-06 09:46:46

C++单向链表

2010-02-04 11:15:28

C++模板限制

2010-01-21 14:07:14

CC++声明

2010-02-02 17:27:16

C++连接MySqL数

2010-02-01 14:26:50

C++读写文本文件

2023-12-18 11:15:03

2011-04-11 12:22:11

数据结构C++

2009-08-14 18:04:59

C#Windows应用

2010-02-01 11:22:09

C++虚函数

2023-12-13 10:51:49

C++函数模板编程

2010-03-26 16:17:24

Python嵌入

2010-02-05 11:23:01

C++声明语法

2010-01-26 17:35:09

C++栈
点赞
收藏

51CTO技术栈公众号