Implement a min-heap using a dynamic array implementation. The class should be named SongHeap, and it uses the same dataset as in PA 3 (Billboard Top 100). Write all basic class functions (default and copy constructors, destructor, copy assignment).

SongHeap has a data member songList, which is an array of Songs. Set the initial size of songList to 5, and double the size as needed. A Song is similar to a TreeNode in PA 3. The song title acts as a key, and smaller keys have higher priority (ex. "A" before B).

struct Song{
string title; //used as key
string artist;
string dates[52]; //filled starting from index 0
int frequency; //should match # of elements in dates
};

Heap Functions

Implement the following functions:

1. void insert(string title, string artist, string date). You should first check all the songs in songList to see if the song is already in the heap. If so, update the frequency and dates of the Song. Otherwise, create and add a Song to the heap (i.e., songList). The heap should grow as needed.

2. string deleteMin(): deletes the Song with the min key and returns its title.

3. print(): prints all the songs in the heap using the following format - arr[i]: title (See the execution example).

4.printSong(string title): finds and prints all the information about the song.

Execution example

Hello! Processing the first 30 lines of top1.csv file.
The array is full. Resizing array to 10 elements.
The array is full. Resizing array to 20 elements.

Printing tree:
arr[1] = All I Want For Christmas Is You
arr[2] = Blinding Lights
arr[3] = Say So
arr[4] = Circles
arr[5] = Rain On Me
arr[6] = The Scotts
arr[7] = The Box
arr[8] = Stuck With U
arr[9] = Savage
arr[10] = Toosie Slide
arr[11] = Rockstar
arr[12] = Trollz

Which song do you want to print? Blinding Lights

Title: Blinding Lights
Artist: The Weeknd
Appeared on the Billboard chart 4 times on:
2020-04-11
2020-04-18
2020-05-02
2020-05-09

Which song do you want to print? Testing

Testing is not in the heap.

Removing the min value. "All I Want For Christmas Is You" has been
removed.
Printing the updated heap:

arr[1] = Blinding Lights
arr[2] = Circles
arr[3] = Say So
arr[4] = Savage
arr[5] = Rain On Me
arr[6] = The Scotts
arr[7] = The Box
arr[8] = Stuck With U
arr[9] = Trollz
arr[10] = Toosie Slide
arr[11] = Rockstar

Removing the min value. "Blinding Lights" has been removed.
Printing the updated heap:

arr[1] = Circles
arr[2] = Rain On Me
arr[3] = Say So
arr[4] = Savage
arr[5] = Rockstar
arr[6] = The Scotts
arr[7] = The Box
arr[8] = Stuck With U
arr[9] = Trollz
arr[10] = Toosie Slide

This is the end of the execution example. Goodbye!
Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.