基于链表的栈实现(c++)

  1. #ifndef _STACK  
  2. #define _STACK  
  3. #include <iostream>  
  4. //节点类  
  5. template <class T>  
  6. class Node  
  7. {  
  8.     public:  
  9.         T data;  
  10.         Node <T> * next;  
  11.       
  12. };  
  13. //栈的类声明,基于链表实现  
  14. template <class T>  
  15. class Stack  
  16. {  
  17.     public:  
  18.         Stack();  
  19.         ~Stack();  
  20.         T pop();//出栈  
  21.         void push(const T&);//入栈  
  22.         bool isEmpty();//判断栈是不是空  
  23.     private:  
  24.         Node<T> * top; //栈顶指针   
  25. };  
  26. //构造函数,建立空栈  
  27. template <class T>  
  28. Stack<T>::Stack()  
  29. {  
  30.     top = NULL;  
  31. }  
  32. //析构函数  
  33. template <class T>  
  34. Stack<T>::~Stack()  
  35. {  
  36.     //释放申请的内存  
  37.     if(top)  
  38.     {  
  39.         Node <T> *p;  
  40.         p = top;  
  41.         top = top->next;  
  42.         delete p;  
  43.     }  
  44. }  
  45. //判断栈是不是空  
  46. template <class T>  
  47. bool Stack<T>::isEmpty()  
  48. {  
  49.     if(top)  
  50.         return false;  
  51.     return true;  
  52. }  
  53. //出栈  
  54. template <class T>  
  55. T Stack<T>::pop()  
  56. {  
  57.     if(top)  
  58.     {  
  59.         T tmp = top->data;  
  60.         Node<T> * p = top;  
  61.         top = top->next;  
  62.         delete p;  
  63.         return tmp;  
  64.     }  
  65. }  
  66. //入栈  
  67. template <class T>  
  68. void Stack<T>::push(const T & a)  
  69. {  
  70.     //申请内存,存储新入栈节点  
  71.     Node<T> * p = new Node <T>;  
  72.       
  73.     p->next = top;  
  74.     p->data = a;  
  75.     top = p;  
  76. }  
  77. #endif 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值