When I try to call printArray with data it will not let me compile or run my program I don't know what else would go in the parameters to allow the program to work. Anything helps thanks.
Header:
main:
Header:
Code:
#pragma once
/*
Header file for the priority queue class
*/
#ifndef PRIORITYQUEUE_H
#define PRIORITYQUEUE_H
class priorityQueue
{
private:
int size;
int *data;
public:
static const int CAPACITY = 50;
priorityQueue();//constructor
~priorityQueue();//destructor
int getParent(int index);
int getLeftChild(int index);
int getRightChild(int index);
void swap(int &, int &);
void insert(int item); //enqueue - heap_insert
void printArray(int []);
void heapify(int index);
//remove and return the smallest item currently in the priority queue
int extractMin();//dequeue
bool empty() const;
int min() const; //return the smallest item
};
#endif
main:
Code:
#include <iostream>
#include "priorityQueue.h"
using namespace std;
int main()
{
priorityQueue myqueue; //class object
if (myqueue.empty())
cout << "My priority Queue is empty\n" << endl; //prompt
myqueue.insert(59); //Insert value into queue
cout << "After inserting 59 Priority Queue has" << endl;
myqueue.heapify(59);
myqueue.printArray(data);
myqueue.insert(41);
cout << "After inserting 41 Priority Queue has" << endl;
myqueue.heapify(41);
myqueue.printArray(data);
myqueue.insert(25);
cout << "After inserting 25 Priority Queue has" << endl;
myqueue.heapify(25);
myqueue.printArray(data);
myqueue.insert(12);
cout << "After inserting 12 Priority Queue has" << endl;
myqueue.heapify(12);
myqueue.printArray(data);
myqueue.insert(91);
cout << "After inserting 91 Priority Queue has" << endl;
myqueue.heapify(91);
myqueue.printArray(data);
myqueue.min();
myqueue.extractMin();
cout << "After extracting the minimum value Priority Queue has" << endl;
myqueue.printArray(data);
myqueue.insert(34);
cout << "After inserting 34 Priority Queue has" << endl;
myqueue.heapify(34);
myqueue.printArray(data);
myqueue.insert(63);
cout << "After inserting 63 Priority Queue has" << endl;
myqueue.heapify(63);
myqueue.printArray(data);
myqueue.extractMin();
cout << "After extracting the minimum value Priority Queue has" << endl;
myqueue.printArray(data);
myqueue.insert(75);
cout << "After inserting 75 Priority Queue has" << endl;
myqueue.heapify(75);
myqueue.printArray(data);
myqueue.insert(85);
cout << "After inserting 85 Priority Queue has" << endl;
myqueue.heapify(85);
myqueue.printArray(data);
myqueue.extractMin();
cout << "After extracting the minimum value Priority Queue has" << endl;
myqueue.printArray(data);
cout <<"Minimum value is " ;
cout << myqueue.min() <<endl; //prints out heap min
system("pause");
return 0;
}
priorityQueue::priorityQueue() //constructor
{
size = CAPACITY;
data = new int[size];
}
priorityQueue::~priorityQueue() //destructor
{
}
int priorityQueue::getParent(int index) //finds parent
{
return (index - 1) / 2;
}
int priorityQueue::getLeftChild(int index) //finds left child
{
return (2 * index) + 1;
}
int priorityQueue::getRightChild(int index) //find right child
{
return (2 * index) + 2;
}
void priorityQueue::swap(int& item1, int& item2) //swaps value of two variables
{
int temp = item1;
item1 = item2;
item2 = temp;
}
void priorityQueue::heapify(int index)
{
int largest = index;
int l = getLeftChild(index);
int r = getRightChild(index);
if (l < size && data[l] > data[index])
{
largest = l;
}
if (r < size && data[r] > data[largest])
{
largest = r;
}
if (largest != index)
{
swap(data[index], data[largest]);
heapify(largest);
}
}
void priorityQueue::printArray(int [])
{
for (int i = 0; i < size; i++)
{
cout << data[i] << ", ";
}
}
int priorityQueue::extractMin() //finds min and removes it
{
int min = data[0];
data[0] = data[size - 1];
size -= 1;
heapify(0);
return min;
}
int priorityQueue::min() const // finds min
{
return data[0];
}
bool priorityQueue::empty() const // checks if heap is empty
{
if (data == NULL)
{
return true;
}
else
{
return false;
}
}
void priorityQueue::insert(int item)
{
size += 1;
int i = size - 1;
while (i > 0 && data[getParent(i)] < item)
{
data[i] = data[getParent(i)];
i = getParent(i);
}
data[i] = item;
}