Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <class sClass>
  6. class Element
  7. {
  8. public:
  9. sClass obj;
  10. int priority;
  11. Element<sClass> *next;
  12. public:
  13. Element()
  14. {
  15. next = NULL;
  16. }
  17. Element(sClass o, int k)
  18. {
  19. obj = o;
  20. priority = k;
  21. }
  22. sClass GetObj()
  23. {
  24. return obj;
  25. }
  26. int GetPriority()
  27. {
  28. return priority;
  29. }
  30. };
  31.  
  32. template<class someClass>
  33. class Queue
  34. {
  35. private:
  36. int size;
  37. Element<someClass> *elem;
  38. Element<someClass> *here, *prev;
  39. public:
  40. Queue()
  41. {
  42. size = 0;
  43. here = NULL;
  44. elem = NULL;
  45. }
  46. int Size()
  47. {
  48. return size;
  49. }
  50. void push_back(someClass obj, int k)
  51. {
  52. Element<someClass> *newObj = new Element<someClass>(obj, k);
  53. if (size != 0)
  54. {
  55. elem = here;
  56. prev = here;
  57. for (int i = 0; i < size; i++)
  58. {
  59. if (i == 2)
  60. elem = here->next;
  61. else if (i > 2)
  62. elem = elem->next;
  63. if (prev->GetPriority() < k)
  64. {
  65. if (i == 0)
  66. {
  67. newObj->next = here;
  68. here = newObj;
  69. break;
  70. }
  71. newObj->next = elem->next;
  72. elem->next = newObj;
  73. break;
  74. }
  75. if (i + 1 == size && size != 0)
  76. {
  77. prev->next = newObj;
  78. break;
  79. }
  80. if (i + 1 != size)
  81. prev = prev->next;
  82. }
  83. }
  84. else
  85. {
  86. here = newObj;
  87. }
  88. size++;
  89. elem = NULL;
  90. prev = NULL;
  91. cout << obj << " pushed" << endl;
  92. }
  93. void pop()
  94. {
  95. if (size != 0)
  96. {
  97. elem = here;
  98. cout << here->GetObj() << " popped" << endl;
  99. if (size == 1)
  100. {
  101. here = NULL;
  102. }
  103. else
  104. {
  105. here = here->next;
  106. }
  107. delete elem;
  108. elem = NULL;
  109. size--;
  110. }
  111. else
  112. cout << "Queue is empty" << endl;
  113. }
  114. void thoose()
  115. {
  116. if (size != 0)
  117. cout << here->GetObj() << endl;
  118. else
  119. cout << "There are no elements" << endl;
  120. }
  121. };
  122.  
  123. int main()
  124. {
  125. Queue<int> qu;
  126. qu.push_back(3, 2);
  127. qu.push_back(5, 1);
  128. qu.push_back(2, 3);
  129. qu.push_back(4, 2);
  130. qu.push_back(6, 1);
  131. qu.push_back(1, 4);
  132. for (int i = 0; i < 8; i++)
  133. qu.pop();
  134.  
  135. system("pause");
  136. return 0;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement