Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

he Node class must be represented as a template. The Node class will require these private fields. T data: The data to hold in the

he Node class must be represented as a template.

The Node class will require these private fields.

  • T data: The data to hold in the Node
  • Node* next: A pointer to the next Node (if any) in the chain of Nodes.
  • Node* prev: A pointer to the previous Node (if any) in the chain of Nodes.

Linked List

This class will require the following fields:

  • Node* mHead: Points the first Node in the chain
  • Node* mTail: Points the last Node in the chain
  • int mSize: Keeps a count of the number of Nodes in the chain

Your LinkedList class must also support the following public member functions.

  • LinkedList(): A default constructor sets both pointers to null and sets the size to 0.
  • LinkedList(const LinkedList&): A copy constructor that takes a LinkedList object and performs a deep copy of the passed list into this list.
  • ~LinkedList(): A destructor that performs pop_front on the list while the list is not empty.
  • operator=(const LinkedList&): LinkedList& An overloaded assignment operator that deletes the current array and replaces it with deep copy of the passed list.
  • size() const: int: Returns the size of the LinkedList.
  • push_back(const T): void: Creates a new Node and assigns it to the end of the list of Nodes while updating the size by 1.
  • push_front(const T): void: Creates a new Node and assigns it to the front of the list of Nodes while updating the size by 1.
  • pop_back(): T: Deletes the Node at the end of the list (or throws an error if this is not possible). Decreases size by 1. Returns the deleted element.
  • pop_front(): T: Deletes the Node at the front of the list (or throws an error if this is not possible). Decreases size by 1. Returns the deleted element.
  • at(int) const: T: Returns the element stored at the specified index. If the index is out-of-bounds (either for being negative or greater than/equal the size of the list), throw invalid\_argument("Index out of bounds.");. This will require you to include the stdexcept library. This method should operate at O(1)image text in transcribed for accessing the first or last element in a list and at O(n)image text in transcribed for any element other than the first or the last.
  • front() const: T: Returns the first element.
  • back() const: T: Returns the last element.

Return to the Books object.

Return to your Books code. Find Books.h and remove the import statements to vector.hpp and replace those with the local version of LinkedList.hpp that you made.

  • Add a menu option to add to the beginning of the list.
  • Add a menu option to remove the first Book in the list.
  • Add a menu option to remove the last Book in the list.
  • Add a menu option to remove every Book in the list.

Test your linked list application. Add a Book to the list 1,000 times. Add a second Book to the list 1,000 times. Remove the first Book in the list. Remove the last Book in the list. Verify that you have 1,998 Books in the list.

After you verify that there are 1,998 Books in the list, clear the list using your newest menu option. Verify that you have 0 Books in the list.

What to Hand In

Upload a zip file containing the following files to the drop box on D2L:

  • LinkedList.hpp - the header file containing the entire class declaration and external definitions of the LinkedList class. Normally, the definitions would be in a separate file, but class templates need to be handled differently in order for them to be compiled properly by the C++ compiler.
  • Node.hpp
  • All files updated from the last homework assignment that have been updated to fit this new linked list.
  • Make sure your name, CSCI 3250, and Programming Assignment 4 appear in comments in all of your files.
  • Note: NO CREDIT will be given to programming assignments that do not compile.
  • Make sure you have compiled and tested your program before handing it in.

vectors class

#include #include using namespace std; int main() { vector v; vector::iterator it; int c, i; while (1) { cout > c; switch (c) { case 1: // Asks the user vector size and its valuses cout > i; v.push_back(i); break; case 3: cout

book class

#include #include using namespace std;

//defined exception class myexception1 : public exception { virtual const char* what() const throw() { return " !!!!ERROR!!!!! Empty String"; } } EmptyStringException;

//user defined exception class myexception2 : public exception { virtual const char* what() const throw() { return " !!!!ERROR!!!! Less than 1900"; } } InvalidPublishYearException;

//class Book class Book { private: string name; string author; int publishYear; int pages;

public:

Book(string name, string author, int publishYear, int pages) //constructors { //check if name is Empty if (name == "") { throw EmptyStringException; } //check if author is Empty if (author == "") { throw EmptyStringException; } //check if publishYear is less than 1900 if (publishYear author = author; this->name = name; this->publishYear = publishYear; this->pages = pages; cout

string getName() //return values { return name; } string getAuthor() { return author; } int getPublishYear() { return publishYear; } int getPages() { return pages; }

};

int main() { string name; string author; int year; int pages; char ans;

do { cout > name; cout > author; cout > year; cout > pages; cout

try {

Book Book(name, author, year, pages); } catch (exception & e) { //prints the error message cout

cout > ans; cout

return 0; }

I need help completing the link list program at the top

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Sams Teach Yourself Beginning Databases In 24 Hours

Authors: Ryan Stephens, Ron Plew

1st Edition

067232492X, 978-0672324925

More Books

Students also viewed these Databases questions