8.13 LAB: Library book sorting Two sorted lists have been created, one implemented using a linked list (LinkedListLibrary linkedListLibrary) and the other implemented using the built-in Vector class (VectorLibrary vectorLibrary). Each list contains 100 books (title, ISBN number, author), sorted in ascending order by ISBN number. Complete main() by inserting a new book into each list using the respective LinkedListLibrary and VectorLibrary InsertSorted() methods and outputting the number of operations the computer must perform to insert the new book. Each InsertSorted() returns the number of operations the computer performs. Ex: If the input is: The Catcher in the Rye 9787543321724 J.D. Salinger the output is: Number of linked list operations: 1 Number of vector operations: 1 Which list do you think will require the most operations? Why? Main.cpp: #include "LinkedListLibrary.h" #include "VectorLibrary.h" #include "BookNode.h" #include "Book.h" #include #include using namespace std; void FillLibraries(LinkedListLibrary &linkedListLibrary, VectorLibrary &vectorLibrary) { ifstream inputFS; // File input stream int linkedListOperations = 0; int vectorOperations = 0; BookNode* currNode; Book tempBook; string bookTitle; string bookAuthor; long bookISBN; // Try to open file inputFS.open("books.txt"); while(getline(inputFS, bookTitle)) { inputFS >> bookISBN; inputFS.ignore(1, '\n'); getline(inputFS, bookAuthor); // Insert into linked list currNode = new BookNode(bookTitle, bookAuthor, bookISBN); linkedListOperations = linkedListLibrary.InsertSorted(currNode, linkedListOperations); linkedListLibrary.lastNode = currNode; // Insert into vector tempBook = Book(bookTitle, bookAuthor, bookISBN); vectorOperations = vectorLibrary.InsertSorted(tempBook, vectorOperations); } inputFS.close(); // close() may throw ios_base::failure if fails } int main (int argc, const char* argv[]) { int linkedListOperations = 0; int vectorOperations = 0; // Create libraries LinkedListLibrary linkedListLibrary = LinkedListLibrary(); VectorLibrary vectorLibrary; // Fill libraries with 100 books FillLibraries(linkedListLibrary, vectorLibrary); // Create new book to insert into libraries BookNode* currNode; Book tempBook; string bookTitle; string bookAuthor; long bookISBN; getline(cin, bookTitle); cin >> bookISBN; cin.ignore(); getline(cin, bookAuthor); // Insert into linked list // No need to delete currNode, deleted by LinkedListLibrary destructor currNode = new BookNode(bookTitle, bookAuthor, bookISBN); // TODO: Call LL_Library's InsertSorted() method to insert currNode and return // the number of operations performed linkedListLibrary.lastNode = currNode; // Insert into VectorList tempBook = Book(bookTitle, bookAuthor, bookISBN); // TODO: Call VectorLibrary's InsertSorted() method to insert currNode and return // the number of operations performed // TODO: Print number of operations for linked list // TODO: Print number of operations for vector }

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
icon
Concept explainers
Question

8.13 LAB: Library book sorting

Two sorted lists have been created, one implemented using a linked list (LinkedListLibrary linkedListLibrary) and the other implemented using the built-in Vector class (VectorLibrary vectorLibrary). Each list contains 100 books (title, ISBN number, author), sorted in ascending order by ISBN number.

Complete main() by inserting a new book into each list using the respective LinkedListLibrary and VectorLibrary InsertSorted() methods and outputting the number of operations the computer must perform to insert the new book. Each InsertSorted() returns the number of operations the computer performs.

Ex: If the input is:

The Catcher in the Rye 9787543321724 J.D. Salinger

the output is:

Number of linked list operations: 1 Number of vector operations: 1

Which list do you think will require the most operations? Why?

Main.cpp:

#include "LinkedListLibrary.h"
#include "VectorLibrary.h"
#include "BookNode.h"
#include "Book.h"
#include <fstream>
#include <iostream>
using namespace std;

void FillLibraries(LinkedListLibrary &linkedListLibrary, VectorLibrary &vectorLibrary) {
ifstream inputFS; // File input stream
int linkedListOperations = 0;
int vectorOperations = 0;

BookNode* currNode;
Book tempBook;

string bookTitle;
string bookAuthor;
long bookISBN;

// Try to open file
inputFS.open("books.txt");

while(getline(inputFS, bookTitle)) {
inputFS >> bookISBN;
inputFS.ignore(1, '\n');
getline(inputFS, bookAuthor);

// Insert into linked list
currNode = new BookNode(bookTitle, bookAuthor, bookISBN);
linkedListOperations = linkedListLibrary.InsertSorted(currNode, linkedListOperations);
linkedListLibrary.lastNode = currNode;

// Insert into vector
tempBook = Book(bookTitle, bookAuthor, bookISBN);
vectorOperations = vectorLibrary.InsertSorted(tempBook, vectorOperations);
}

inputFS.close(); // close() may throw ios_base::failure if fails
}

int main (int argc, const char* argv[]) {
int linkedListOperations = 0;
int vectorOperations = 0;

// Create libraries
LinkedListLibrary linkedListLibrary = LinkedListLibrary();
VectorLibrary vectorLibrary;

// Fill libraries with 100 books
FillLibraries(linkedListLibrary, vectorLibrary);

// Create new book to insert into libraries
BookNode* currNode;
Book tempBook;

string bookTitle;
string bookAuthor;
long bookISBN;

getline(cin, bookTitle);
cin >> bookISBN;
cin.ignore();
getline(cin, bookAuthor);

// Insert into linked list
// No need to delete currNode, deleted by LinkedListLibrary destructor
currNode = new BookNode(bookTitle, bookAuthor, bookISBN);
// TODO: Call LL_Library's InsertSorted() method to insert currNode and return
// the number of operations performed

linkedListLibrary.lastNode = currNode;

// Insert into VectorList
tempBook = Book(bookTitle, bookAuthor, bookISBN);
// TODO: Call VectorLibrary's InsertSorted() method to insert currNode and return
// the number of operations performed

// TODO: Print number of operations for linked list

// TODO: Print number of operations for vector

}

 

 

 

The image displays a coding exercise related to library book sorting, specifically within the context of a LAB activity labeled "8.13.1: LAB: Library book sorting." The interface allows for viewing and editing code files, with a drop-down menu showing available files. The current file selected is "VectorLibrary.cpp", and the menu includes options such as:

- main.cpp
- LinkedListLibrary.h
- LinkedListLibrary.cpp
- VectorLibrary.h
- VectorLibrary.cpp
- BookNode.h
- BookNode.cpp
- Book.h

The code in the "VectorLibrary.cpp" file is as follows:

```cpp
1  #include "VectorLibrary.h"
2  #include <iostream>
3
4  VectorLibrary::VectorLibrary() {
5      vector<Book> library;
6  }
7
8  int VectorLibrary::InsertSorted(const Book &newBook) {
9      Book currBook;
10
11     // Add an empty element at end of list
12     Book emptyBook;
13     library.push_back(emptyBook);
14
15     // Loop through elements starting at the end
16     for (int i = library.size() - 2; i >=0; --i) {
17         currBook = library.at(i);
18
```

The main focus of this code is a class method `InsertSorted` in `VectorLibrary`, which appears to handle inserting a book into a sorted library collection implemented as a vector. An empty book element is added to the end of the vector, followed by a loop iterating backwards through the list, allowing implementation of sorting logic.
Transcribed Image Text:The image displays a coding exercise related to library book sorting, specifically within the context of a LAB activity labeled "8.13.1: LAB: Library book sorting." The interface allows for viewing and editing code files, with a drop-down menu showing available files. The current file selected is "VectorLibrary.cpp", and the menu includes options such as: - main.cpp - LinkedListLibrary.h - LinkedListLibrary.cpp - VectorLibrary.h - VectorLibrary.cpp - BookNode.h - BookNode.cpp - Book.h The code in the "VectorLibrary.cpp" file is as follows: ```cpp 1 #include "VectorLibrary.h" 2 #include <iostream> 3 4 VectorLibrary::VectorLibrary() { 5 vector<Book> library; 6 } 7 8 int VectorLibrary::InsertSorted(const Book &newBook) { 9 Book currBook; 10 11 // Add an empty element at end of list 12 Book emptyBook; 13 library.push_back(emptyBook); 14 15 // Loop through elements starting at the end 16 for (int i = library.size() - 2; i >=0; --i) { 17 currBook = library.at(i); 18 ``` The main focus of this code is a class method `InsertSorted` in `VectorLibrary`, which appears to handle inserting a book into a sorted library collection implemented as a vector. An empty book element is added to the end of the vector, followed by a loop iterating backwards through the list, allowing implementation of sorting logic.
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps

Blurred answer
Knowledge Booster
Types of Linked List
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