fork download
  1. #include <iostream>
  2.  
  3. class Item{
  4. private:
  5. int key;
  6. int data;
  7. public:
  8. Item(): data(0), key(0){}
  9. Item(int data, int key): data(data), key(key){}
  10. void print(){
  11. std::cout << "data: " << data << ", key " << key << std::endl;
  12. }
  13. bool operator <(const Item &item){ return key < item.key; }
  14. bool operator >(const Item &item){ return key > item.key; }
  15. };
  16.  
  17. template<class Item>
  18. class PQ{
  19. private:
  20. Item *pq; /*Массив элементов*/
  21. int n; /*Текущее оличество элементов в очереди*/
  22. public:
  23. PQ(int max){
  24. pq = new Item[max];
  25. n = 0;
  26. }
  27.  
  28. int empty() const{ return n == 0; }
  29.  
  30. void insert(Item item){
  31. int pos; /*Позиция для вставки*/
  32.  
  33. if(n == 0) /*Если в очереди еще нет элементов*/
  34. pos = 0;
  35. else
  36. for(int i = 1; i < n; i++)
  37. if(pq[pos] < pq[i])
  38. pos = i;
  39. pq[++pos] = item;
  40. n++;
  41. //pq[n++] = item;
  42. }
  43.  
  44. Item getmax(){
  45. int max = 0;
  46.  
  47. for(int i = 1; i < n; i++)
  48. if(pq[max] < pq[i])
  49. max = i;
  50. std::swap(pq[max], pq[n-1]);
  51. return pq[--n];
  52. }
  53.  
  54. Item getmin(){
  55. int min = 0;
  56.  
  57. for(int i = 1; i < n; i++)
  58. if(pq[min] > pq[i])
  59. min = i;
  60. std::swap(pq[min], pq[n-1]);
  61. return pq[--n];
  62. }
  63.  
  64. void show(){
  65. for(int i = 0; i < n; i++)
  66. pq[i].print();
  67. }
  68. };
  69.  
  70. int main(){
  71. int p;;
  72. PQ<Item> pq(50);
  73.  
  74. for(int i = 0; i < 10; i++)
  75. pq.insert(Item(7, i));
  76.  
  77. pq.show();
  78.  
  79. std::cout << "max: ";
  80. pq.getmax().print();
  81. std::cout << "max: ";
  82. pq.getmax().print();
  83. std::cout << "min: ";
  84. pq.getmin().print();
  85. std::cout << "min: ";
  86. pq.getmin().print();
  87.  
  88. std::cin >> p;
  89. return 0;
  90. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
data: 0, key 0
data: 7, key 1
data: 7, key 2
data: 7, key 3
data: 7, key 4
data: 7, key 5
data: 7, key 6
data: 7, key 7
data: 7, key 8
data: 7, key 9
max: data: 7, key 9
max: data: 7, key 8
min: data: 0, key 0
min: data: 7, key 1