fork download
  1. #include <iostream>
  2.  
  3. template<class T>
  4. struct Node
  5. {
  6. T data;
  7. Node<T> *next;
  8. };
  9.  
  10. template<typename T>
  11. class Stack{
  12. private:
  13. Node<T>* mHead;
  14.  
  15. public:
  16. Stack();
  17. Stack(const Stack&) = delete;
  18. Stack& operator =(const Stack&) = delete;
  19. ~Stack();
  20.  
  21. void push(T data);
  22. };
  23.  
  24. template<typename T>
  25. Stack<T>::Stack()
  26. {
  27. mHead = NULL;
  28. }
  29.  
  30. template<typename T>
  31. Stack<T>::~Stack()
  32. {
  33. while (mHead)
  34. {
  35. std::cout << "deleting " << mHead->data << '\n';
  36. Node<T> *tmp = mHead;
  37. mHead = tmp->next;
  38. delete tmp;
  39. }
  40. }
  41.  
  42. template<typename T>
  43. void Stack<T>::push(T data)
  44. {
  45. std::cout << "pushing " << data << '\n';
  46. Node<T>* temp = new Node<T>;
  47. temp->data = data;
  48. temp->next = mHead;
  49. mHead = temp;
  50. }
  51.  
  52. int main()
  53. {
  54. Stack<int> test;
  55. for (int i=0; i<10; ++i)
  56. test.push(i);
  57. }
  58.  
Success #stdin #stdout 0s 3272KB
stdin
Standard input is empty
stdout
pushing 0
pushing 1
pushing 2
pushing 3
pushing 4
pushing 5
pushing 6
pushing 7
pushing 8
pushing 9
deleting 9
deleting 8
deleting 7
deleting 6
deleting 5
deleting 4
deleting 3
deleting 2
deleting 1
deleting 0