Advertisement
Guest User

Untitled

a guest
May 6th, 2015
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.85 KB | None | 0 0
  1. int GetLength(QueType queue);
  2.  
  3. typedef char ItemType;
  4.  
  5. #include "QueType.h"
  6. using namespace std;
  7.  
  8. int GetLength(QueType queue);
  9.  
  10. int main()
  11. {
  12.  
  13. ItemType item; //typedef char
  14. //initialize and fill the queue
  15. QueType que(5);
  16. que.Enqueue('A');
  17. que.Enqueue('B');
  18. que.Enqueue('C');
  19. que.Enqueue('D');
  20. que.Enqueue('E');
  21.  
  22. cout << "The length of the queue is " << GetLength(que) << endl;
  23.  
  24. while (!que.IsEmpty())
  25. {
  26. que.Dequeue(item);
  27. cout << "Dequeue item of queue: " << item << endl;
  28. }
  29.  
  30. system("PAUSE");
  31. return EXIT_SUCCESS;
  32. }
  33.  
  34. int GetLength(QueType queue)
  35. {
  36. int cnt = 0;
  37. ItemType item;
  38. while (!queue.IsEmpty())
  39. {
  40. queue.Dequeue(item);
  41. cout << "Dequeue item of local copy of queue: " << item << endl;
  42. cnt++;
  43. }
  44. return cnt;
  45. }
  46.  
  47. Dequeue item of local copy of queue: A
  48. Dequeue item of local copy of queue: B
  49. Dequeue item of local copy of queue: C
  50. Dequeue item of local copy of queue: D
  51. Dequeue item of local copy of queue: E
  52. The length of the queue is 5
  53. Dequeue item of queue: A
  54. Dequeue item of queue: B
  55. Dequeue item of queue: C
  56. Dequeue item of queue: D
  57. Dequeue item of queue: E
  58. Press any key to continue . . .
  59.  
  60. Dequeue item of local copy of queue: A
  61. Dequeue item of local copy of queue: B
  62. Dequeue item of local copy of queue: C
  63. Dequeue item of local copy of queue: D
  64. Dequeue item of local copy of queue: E
  65. The length of the queue is 5
  66. Dequeue item of queue: p
  67. Dequeue item of queue: ↨
  68. Dequeue item of queue: 7
  69. Dequeue item of queue:
  70. Dequeue item of queue: ─
  71. Press any key to continue . . .
  72.  
  73. class EmptyQueue
  74. {};
  75. typedef char ItemType;
  76. class QueType
  77. {
  78. public:
  79. QueType();
  80. QueType(int max);
  81. ~QueType();
  82. void MakeEmpty();
  83. bool IsEmpty() const;
  84. bool IsFull() const;
  85. void Enqueue(ItemType newItem);
  86. void Dequeue(ItemType& item);
  87. private:
  88. int front;
  89. int rear;
  90. ItemType* items;
  91. int maxQue;
  92. };
  93.  
  94. #include "QueType.h"
  95.  
  96. QueType::QueType(int max)
  97. {
  98. maxQue = max + 1;
  99. front = maxQue - 1;
  100. rear = maxQue - 1;
  101. items = new ItemType[maxQue];
  102. }
  103. QueType::QueType() // Default class constructor
  104. {
  105. maxQue = 501;
  106. front = maxQue - 1;
  107. rear = maxQue - 1;
  108. items = new ItemType[maxQue];
  109. }
  110. QueType::~QueType() // Class destructor
  111. {
  112. delete [] items;
  113. }
  114.  
  115. void QueType::MakeEmpty()
  116. {
  117. front = maxQue - 1;
  118. rear = maxQue - 1;
  119. }
  120.  
  121. bool QueType::IsEmpty() const
  122. {
  123. return (rear == front);
  124. }
  125.  
  126. bool QueType::IsFull() const
  127. {
  128. return ((rear + 1) % maxQue == front);
  129. }
  130.  
  131. void QueType::Enqueue(ItemType newItem)
  132. {
  133. if (IsFull())
  134. throw FullQueue();
  135. else
  136. {
  137. rear = (rear +1) % maxQue;
  138. items[rear] = newItem;
  139. }
  140. }
  141.  
  142. void QueType::Dequeue(ItemType& item)
  143. {
  144. if (IsEmpty())
  145. throw EmptyQueue();
  146. else
  147. {
  148. front = (front + 1) % maxQue;
  149. item = items[front];
  150. }
  151. }
  152.  
  153. while(!Q.empty())
  154. tmp.enqueue(Q.dequeue())
  155. counter++
  156.  
  157. while(!tmp.empty())
  158. Q.enqueue(tmp.dequeue())
  159.  
  160. QueType::~QueType() // Class destructor
  161. {
  162. delete [] items;
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement