Provide full C++ Code: Your code must have the following three files: Playlist.hpp - Class declaration for a linked list of Nodes (very similar to lab 08 but with some changes to methods, as described below) with following private data members: private: Node* first; Node* last; int size; Playlist.cpp - Class definition main.cpp - main() function Checkpoint A Build a playlist (of songs) by reading data members of several songs from a file and printing them. Implement the following methods: PlayList(); //Default constructor PlayList(string filename); //Parameterized constructor that reads data members of song from a file and builds the PlayList ~PlayList(); //Deletes all nodes of the linked list bool InsertNodeLast(Node *myNewNode); //Inserts myNewNode at the end of the linked list bool InsertNodeFirst(Node *myNewNode); //Inserts myNewNode at the start of the linked list bool DeleteFirst(); //Deletes the first node of the linked list int Size() const { return size; } friend ostream& operator<< (ostream& out, const PlayList& LL); //Prints the linked list PlayList& operator=(const PlayList& other); //Overload the assignment operator such that the current PlayList is reverse of the other PlayLis Notes: InsertNodeLast and InsertNodeFirst are very similar to InsertFirst and InsertLast from Lab 08 except that these functions get a Node (to be inserted) as a parameter. DeleteFirst should be identical to that of Lab 08 The parameterized constructor needs to read data from the file (for each song), create a new node, and call InsertNodeLast to insert the node in the list. The destructor deletes all nodes by repeatedly calling DeleteFirst (exactly the same as lab 08) The implementation of << operator can be inferred from the desired output (see below) The assignment operator is virtually the same as that in lab 08 except for two important changes Instead of inserting nodes from the other list sequentially, it needs to insert them in the reverse order (which method can be used for that?). This does not extend to the case when the current playlist is the same as the other playlist. In other words, if the current and the other playlist are the same, simply return. It must create a new node (copying attributes from the node in the other list) before inserting it into the list Testing and output Running it should give the following output: "Peg" by Steely Dan is 237 seconds long. "All For You" by Janet Jackson is 391 seconds long. "Black Eagle" by Janet Jackson is 197 seconds long. Reversing the play list "Black Eagle" by Janet Jackson is 197 seconds long. "All For You" by Janet Jackson is 391 seconds long. "Peg" by Steely Dan is 237 seconds long.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Provide full C++ Code:

Your code must have the following three files:

  • Playlist.hpp - Class declaration for a linked list of Nodes (very similar to lab 08 but with some changes to methods, as described below) with following private data members:

private:
Node* first;
Node* last;
int size;

  • Playlist.cpp - Class definition
  • main.cpp - main() function

Checkpoint A

Build a playlist (of songs) by reading data members of several songs from a file and printing them.

Implement the following methods:

PlayList(); //Default constructor
PlayList(string filename); //Parameterized constructor that reads data members of song from a file and builds the PlayList
~PlayList(); //Deletes all nodes of the linked list

bool InsertNodeLast(Node *myNewNode); //Inserts myNewNode at the end of the linked list
bool InsertNodeFirst(Node *myNewNode); //Inserts myNewNode at the start of the linked list
bool DeleteFirst(); //Deletes the first node of the linked list

int Size() const { return size; }
friend ostream& operator<< (ostream& out, const PlayList& LL); //Prints the linked list

PlayList& operator=(const PlayList& other); //Overload the assignment operator such that the current PlayList is reverse of the other PlayLis

Notes:

  • InsertNodeLast and InsertNodeFirst are very similar to InsertFirst and InsertLast from Lab 08 except that these functions get a Node (to be inserted) as a parameter.
  • DeleteFirst should be identical to that of Lab 08
  • The parameterized constructor needs to read data from the file (for each song), create a new node, and call InsertNodeLast to insert the node in the list.
  • The destructor deletes all nodes by repeatedly calling DeleteFirst (exactly the same as lab 08)
  • The implementation of << operator can be inferred from the desired output (see below)
  • The assignment operator is virtually the same as that in lab 08 except for two important changes
    • Instead of inserting nodes from the other list sequentially, it needs to insert them in the reverse order (which method can be used for that?).
      • This does not extend to the case when the current playlist is the same as the other playlist. In other words, if the current and the other playlist are the same, simply return.
    • It must create a new node (copying attributes from the node in the other list) before inserting it into the list

Testing and output

Running it should give the following output:

"Peg" by Steely Dan is 237 seconds long.
"All For You" by Janet Jackson is 391 seconds long.
"Black Eagle" by Janet Jackson is 197 seconds long.

Reversing the play list
"Black Eagle" by Janet Jackson is 197 seconds long.
"All For You" by Janet Jackson is 391 seconds long.
"Peg" by Steely Dan is 237 seconds long.


Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Linked List Representation
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education