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. Item key;
  32. int i = 0;
  33.  
  34. for(int j = 0; j < n; j++){
  35. key = item;
  36. i = j - 1;
  37. while(i >= 0 && pq[i] < key){
  38. pq[i+1] = pq[i];
  39. i = i - 1;
  40. }
  41. pq[i+1] = key;
  42. }
  43. //pq[n++] = item;
  44. }
  45.  
  46. Item getmax(){
  47. int max = 0;
  48.  
  49. for(int i = 1; i < n; i++)
  50. if(pq[max] < pq[i])
  51. max = i;
  52. std::swap(pq[max], pq[n-1]);
  53. return pq[--n];
  54. }
  55.  
  56. Item getmin(){
  57. int min = 0;
  58.  
  59. for(int i = 1; i < n; i++)
  60. if(pq[min] > pq[i])
  61. min = i;
  62. std::swap(pq[min], pq[n-1]);
  63. return pq[--n];
  64. }
  65.  
  66. void show(){
  67. for(int i = 0; i < n; i++)
  68. pq[i].print();
  69. }
  70. };
  71.  
  72. int main(){
  73. int p;;
  74. PQ<Item> pq(50);
  75.  
  76. for(int i = 0; i < 10; i++)
  77. pq.insert(Item(7, i));
  78.  
  79. pq.show();
  80.  
  81. std::cout << "max: ";
  82. pq.getmax().print();
  83. std::cout << "max: ";
  84. pq.getmax().print();
  85. std::cout << "min: ";
  86. pq.getmin().print();
  87. std::cout << "min: ";
  88. pq.getmin().print();
  89.  
  90. std::cin >> p;
  91. return 0;
  92. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
max: data: 0, key 0
max: data: 409, key 0
min: data: 0, key 0
min: data: 0, key 0