
// include guard
#ifndef PRIORITYQ_H
#define PRIORITYQ_H

#include "json.hpp"
class PriorityQueue{
  int *heapArray;   // pointer to heap array
  int max_size;     // max size of heap array
  int heap_size;    // elements in heap
public:
  // required functions
  void insert(int);
  void removeMax();
  void removeKey(int);
  void change(int*, int*);
  // helpful functions
  void heapifyUp(int, int);
  void heapifyDown(int);
  //nlohmann::json JSON();
  // other required functions (for now)
  void initiateHeap(int);
  void printArray();
};


void insert(int newNode);
void removeMax();
void removeKey(int key);
void change(int* key, int* newK);
// helpful functions
void heapifyUp(int key, int index);
void heapifyDown(int node);
//nlohmann::json JSON();
// other required functions (for now)
void initiateHeap(int capacity);
void printArray();


#endif
