Guest User

Untitled

a guest
Oct 21st, 2017
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.84 KB | None | 0 0
  1. Queue<int>X;
  2. //trying to run the program .
  3. for ( int i = 0; i < 5; i++)
  4. {
  5. X.Push(i + 1);
  6. cout << X.Size() << endl;
  7. }
  8. X.front();/
  9. X.Pop();
  10. X.front();
  11. X.Pop();
  12.  
  13.  
  14. return 0;
  15.  
  16. template<class Mine>
  17. class Node
  18. {
  19. public:
  20. Mine Value;
  21. Node<Mine> *Prev;
  22. Node();
  23. Node(Mine );
  24. };
  25.  
  26. template<class Mine>
  27. //Queue Class
  28. class Queue
  29. {
  30. int Elements;
  31. Node<Mine> *Front, *Back;
  32.  
  33. public:
  34. Queue();
  35. ~Queue();
  36. int Size();//returns Queue Size
  37. void Push(Mine );//Push a new value to the back
  38. void Pop();//removes a value from the front
  39. void Clear();// delete all the elements
  40. bool isEmpty();// checks if there are no elements in the queue
  41. Mine front();//returns the value in the front
  42.  
  43. };
  44.  
  45. template<class Mine>
  46. Node<Mine>::Node()
  47. {
  48. Value = 0;
  49. Prev = 0;
  50. }
  51.  
  52. template<class Mine>
  53. Node<Mine>::Node(Mine Value)
  54. {
  55. this->Value = Value;
  56. Prev = 0;
  57. }
  58.  
  59. template<class Mine>
  60. Queue<Mine>::Queue()
  61. {
  62. Elements = 0;
  63. Front = Back = 0;
  64. }
  65.  
  66. template<class Mine>
  67. Queue<Mine>::~Queue()
  68. {
  69. Clear();
  70. }
  71.  
  72. template<class Mine>
  73. int Queue<Mine>::Size()
  74. {
  75. return Elements;
  76. }
  77.  
  78. template<class Mine>
  79. void Queue<Mine>::Push(Mine Value)
  80. {
  81. Node<Mine> *NEW = new Node<Mine>(Value);
  82. if (Front==0)
  83. {
  84. Front = Back = NEW;
  85. Back->Prev = 0;
  86. }
  87. else
  88. {
  89. Back->Prev=NEW;
  90. Back = NEW;
  91. Back->Prev = 0;
  92. }
  93. Elements++;
  94. }
  95.  
  96. template<class Mine>
  97. void Queue<Mine>::Pop()
  98. {
  99. Node<T>*tmp;
  100. assert(!isEmpty());
  101. tmp = Front->Prev;
  102. delete Front;
  103. Front = tmp;
  104. delete tmp;
  105.  
  106. if ( Elements==1)Front=Back;
  107. Elements--;
  108.  
  109. }
  110. template<class Mine>
  111. void Queue<Mine>::Clear()
  112. {
  113. for (int i = 0; i < Elements; i++)
  114. {
  115. Pop();
  116. }
  117. }
  118. template<class Mine>
  119. bool Queue<Mine>::isEmpty()
  120. {
  121. return Elements == 0;
  122. }
  123. template<class Mine>
  124. Mine Queue<Mine>::front()
  125. {
  126. assert(!isEmpty());
  127. return Front->Value;
  128. }
Add Comment
Please, Sign In to add comment