Program 02 Based on the previous problem, you should implement this second problem in the same file a05.c. Find the places in the code marked with the ToDo label and complete the work. You should not change any other part of the code. This includes do not add any global variables or any other function. For this problem, we are reusing the same struct from problem 1, but adding a pointer to the struct to be able to create a linked list. In this problem, you must use linked list to create a user playlist (play_list). The struct is holding the information of a song: ID, Name, Singer, Genre, Year, and the pointer Next (the pointer to the struct). There should be the following functions. In the similar way we have done in previous assignments, complete the following functions: Add a song to the play_list - always inserted at the end of the list. Search song by name - given the name of the song, return the struct with the data of the song. Edit a song - given the name of the song, find it in the play_list and modify any of the fields of the song (ID cannot be edited, and all fields should have a valid value). Return -1 if the song was not found. Delete a song - given the name of the song, find it, delete the song from the play_list (i.e., disconnect the node from the list). Return -1 if the song was not found, 1 if it was deleted. // Problem 2 // struct to hold information about a song struct Song { int id; char name[MAX_SONG_NAME_LENGTH]; char singer[MAX_SINGER_NAME_LENGTH]; genreType genre; int year; struct Song *next; }; // Function declarations struct Song *createSong(int id, char *name, char *singer, char *genre, int year); void printPlaylist(struct Song *playlist); void add_song(struct Song **playlist, struct Song *newSong); struct Song *search_song(struct Song *playlist, char *name); int edit_song(struct Song *playlist, char *name, char *singer, char *genre, int year); int delete_song(struct Song *playlist, char *name); // function to create a new song struct Song *createSong(int id, char *name, char *singer, char *genre, int year) { struct Song *newSong = (struct Song *)malloc(sizeof(struct Song)); newSong->id = id; strcpy(newSong->name, name); strcpy(newSong->singer, singer); if (strcmp(genre, "Pop") == 0) newSong->genre = 1; else if (strcmp(genre, "Rock") == 0) newSong->genre = 2; else if (strcmp(genre, "Reggae") == 0) newSong->genre = 3; else if (strcmp(genre, "Country") == 0) newSong->genre = 4; else if (strcmp(genre, "Blues") == 0) newSong->genre = 5; else if (strcmp(genre, "Balad") == 0) newSong->genre = 6; else newSong->genre = 0; newSong->year = year; newSong->next = NULL; return newSong; } // function to print the playlist void printPlaylist(struct Song *playlist) { struct Song *current = playlist; while (current != NULL) { printf("%dt%st%st%dt%dn", current->id, current->name, current->singer, current->genre, current->year); current = current->next; } } // function to add a song to the end of the playlist void add_song(struct Song .