Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

Hello!I need to have this assignment finished on November 4th before midnight. For this assignment we are learning about Linked Bags, Recursion, and smart pointers in C++. I was wondering if it is...

1 answer below »
Hello!I need to have this assignment finished on November 4th before midnight. For this assignment we are learning about Linked Bags, Recursion, and smart pointers in C++. I was wondering if it is possible to have a modification done for Parts B and C for the code I written. My code is generic, but the professor is really picky about any lines of code matching up to anything found online. Is it possible to do any modifications so that it doesn't match up to other solutions found?Here is some context of what Parts B and C in the assignment asked us to do:For Part B, we are to implement 8 small additional functions and 2 helper functions to the linked bag. We are given two files, called "LinkedBag340.cpp" and "Include.h" in which we put these implementations in. The descriptions of these 8 functions and helper functions that we need to add are listed in the "Assignment-03.pdf" under the Part B section. The output had to produce similar output shown in the "Asmt03_Run1.txt" and "Asmt03.Run2.txt" The difference between the outputs in Run1 and Run2, could be found under the line "--->>>>> Test 9 --->>>>>." Test 9's output must be identical to the sample outputs except for the random values. The random values in 2 sample runs' output must be different.
For Part C, a copy of Part B's solution must be made, and renamed as "PartC_SmartPointers." Then, going through all of the files in the zip file provided, not just the LinkedBag340.cpp, smart pointers should be added to places wherever it may be appropriate. The output should produce the same output as the Part B output.For further explanation, the instructions under sections Part B and Part C could be found in the "Assignment-03.pdf." I have also attached the zip file containing the work I have done for both parts.
Thanks in advance!
Answered Same Day Nov 04, 2021

Solution

Aditi answered on Nov 05 2021
144 Votes
Solution/PartB/Asmt03_Run1.txt
----- LINKED BAG 340 C++-----
---
Test 1 ---
!add()... #-END 5-FIVE 4-FOUR 4-FOUR 3-THREE 2-TWO 1-ONE 0-ZERO #-BEGIN
!Display bag: #-BEGIN 0-ZERO 1-ONE 2-TWO 3-THREE 4-FOUR 4-FOUR 5-FIVE #-END
-----------> 9 item(s) total
---
Test 2 ---
!removeSecondNode340()...
!removeSecondNode340()...
!Display bag: #-BEGIN 2-TWO 3-THREE 4-FOUR 4-FOUR 5-FIVE #-END
-----------> 7 item(s) total
!removeSecondNode340()...
!removeSecondNode340()...
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END
-----------> 5 item(s) total
---
Test 3 ---
!addEnd340()...
!addEnd340()...
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR
-----------> 7 item(s) total
!addEnd340()...
!addEnd340()...
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 4 ---
!getCu
entSize340Iterative - Iterative...
---> Cu
ent size: 9
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 5 ---
!getCu
entSize340Recursive() - Recursive...
---> Cu
ent size: 9
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 6 ---
!getCu
entSize340RecursiveNoHelper() - Recursive...
---> Cu
ent size: 9
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 7 ---
!getFrequencyOf()...
---> 0-ZERO: 1
---> 1-ONE: 0
---> 2-TWO: 0
---> 4-FOUR: 3
---> 9-NINE: 2
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
!getFrequencyOf340Recursive() - Recursive...
---> 0-ZERO: 1
---> 1-ONE: 0
---> 2-TWO: 0
---> 4-FOUR: 3
---> 9-NINE: 2
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 8 ---
!getFrequencyOf340RecursiveNoHelper() - Recursive...
---> 0-ZERO: 1
---> 1-ONE: 0
---> 2-TWO: 0
---> 4-FOUR: 3
---> 9-NINE: 2
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 9 ---
!removeRandom340() ---> 4-FOUR
!removeRandom340() ---> 9-NINE
!Display bag: 4-FOUR 5-FIVE #-END #-BEGIN 4-FOUR 9-NINE 0-ZERO
-----------> 7 item(s) total
!removeRandom340() ---> #-BEGIN
!removeRandom340() ---> 4-FOUR
!Display bag: #-END 5-FIVE 4-FOUR 9-NINE 0-ZERO
-----------> 5 item(s) total
!removeRandom340() ---> 9-NINE
!removeRandom340() ---> #-END
!Display bag: 4-FOUR 5-FIVE 0-ZERO
-----------> 3 item(s) total
!removeRandom340() ---> 0-ZERO
!removeRandom340() ---> 5-FIVE
!Display bag: 4-FOUR
-----------> 1 item(s) total
Solution/PartB/Asmt03_Run2.txt
----- LINKED BAG 340 C++-----
---
Test 1 ---
!add()... #-END 5-FIVE 4-FOUR 4-FOUR 3-THREE 2-TWO 1-ONE 0-ZERO #-BEGIN
!Display bag: #-BEGIN 0-ZERO 1-ONE 2-TWO 3-THREE 4-FOUR 4-FOUR 5-FIVE #-END
-----------> 9 item(s) total
---
Test 2 ---
!removeSecondNode340()...
!removeSecondNode340()...
!Display bag: #-BEGIN 2-TWO 3-THREE 4-FOUR 4-FOUR 5-FIVE #-END
-----------> 7 item(s) total
!removeSecondNode340()...
!removeSecondNode340()...
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END
-----------> 5 item(s) total
---
Test 3 ---
!addEnd340()...
!addEnd340()...
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR
-----------> 7 item(s) total
!addEnd340()...
!addEnd340()...
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 4 ---
!getCu
entSize340Iterative - Iterative...
---> Cu
ent size: 9
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 5 ---
!getCu
entSize340Recursive() - Recursive...
---> Cu
ent size: 9
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 6 ---
!getCu
entSize340RecursiveNoHelper() - Recursive...
---> Cu
ent size: 9
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 7 ---
!getFrequencyOf()...
---> 0-ZERO: 1
---> 1-ONE: 0
---> 2-TWO: 0
---> 4-FOUR: 3
---> 9-NINE: 2
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
!getFrequencyOf340Recursive() - Recursive...
---> 0-ZERO: 1
---> 1-ONE: 0
---> 2-TWO: 0
---> 4-FOUR: 3
---> 9-NINE: 2
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 8 ---
!getFrequencyOf340RecursiveNoHelper() - Recursive...
---> 0-ZERO: 1
---> 1-ONE: 0
---> 2-TWO: 0
---> 4-FOUR: 3
---> 9-NINE: 2
!Display bag: #-BEGIN 4-FOUR 4-FOUR 5-FIVE #-END 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 9 item(s) total
---
Test 9 ---
!removeRandom340() ---> #-END
!removeRandom340() ---> 4-FOUR
!Display bag: 4-FOUR 5-FIVE #-BEGIN 9-NINE 4-FOUR 9-NINE 0-ZERO
-----------> 7 item(s) total
!removeRandom340() ---> 4-FOUR
!removeRandom340() ---> 9-NINE
!Display bag: #-BEGIN 5-FIVE 4-FOUR 9-NINE 0-ZERO
-----------> 5 item(s) total
!removeRandom340() ---> 5-FIVE
!removeRandom340() ---> #-BEGIN
!Display bag: 4-FOUR 9-NINE 0-ZERO
-----------> 3 item(s) total
!removeRandom340() ---> 9-NINE
!removeRandom340() ---> 4-FOUR
!Display bag: 0-ZERO
-----------> 1 item(s) total
Solution/PartB/BagInterface.h
BagInterface.h
  Created by Frank M. Ca
ano and Timothy M. Henry.
Updated by Duc Ta
  Copyright (c) 2017 Pearson Education, Hoboken, New Jersey.
#pragma once
#include PLEASE DO NOT CHANGE THIS FILE
templateclass BagInterface {
public:
    /*--------------------------CSC340------------------------------*
    
Remove the second node
    virtual bool removeSecondNode340() = 0;
    
Add a node to the end of the linked list
    virtual bool addEnd340(const ItemType&) = 0;
    
getCu
entSize() - Iterative
    virtual int getCu
entSize340Iterative() const = 0;
    
getCu
entSize() - Recursive
    virtual int getCu
entSize340Recursive() const = 0;
    
getCu
entSize() - Recursive
    virtual int getCu
entSize340RecursiveNoHelper() const = 0;
    
getFrequencyOf340Recursive() - Recursive
    virtual int getFrequencyOf340Recursive(const ItemType&) const = 0;
    
getFrequencyOf340Recursive() - Recursive
    virtual int getFrequencyOf340RecursiveNoHelper(const ItemType&) const = 0;
    
Remove a random node
    virtual ItemType removeRandom340() = 0;
    /*--------------------------------------------------------------*

Gets the cu
ent number of entries in this bag.
    virtual int getCu
entSize() const = 0;
    
Sees whether this bag is empty.
    virtual bool isEmpty() const = 0;
    
Adds a new entry to this bag.
    virtual bool add(const ItemType&) = 0;
    
Removes one occu
ence of a given entry from this bag, if possible.
    virtual bool remove(const ItemType&) = 0;
    
Removes all entries from this bag.
    virtual void clear() = 0;
    
Counts the number of times a given entry appears in bag.
    virtual int getFrequencyOf(const ItemType&) const = 0;
    
Tests whether this bag contains a given entry.
    virtual bool contains(const ItemType&) const = 0;
    
Empties and then fills a given vector with all entries that are in this bag.
    virtual std::vecto
ItemType> toVector() const = 0;
    
Destroys object and frees memory allocated by object.
    virtual ~BagInterface() { }
};
end BagInterface
Solution/PartB/Include.h
    Include.h
#pragma once
#include "Node.cpp"
#include "BagInterface.h"
#includeusing namespace std;
templateclass LinkedBag : public BagInterface {
*--------------------------CSC340-------------------------------------*
public:
    bool removeSecondNode340();
    bool addEnd340(const ItemType&);
    int getCu
entSize340Iterative() const;
    int getCu
entSize340Recursive() const;
    int getCu
entSize340RecursiveNoHelper() const;
    int getFrequencyOf340Recursive(const ItemType&) const;
    int getFrequencyOf340RecursiveNoHelper(const ItemType&) const;
    ItemType removeRandom340();
    
private:
    int getCu
entSize340RecursiveHelper(Node*) const;
if needed
    int getFrequencyOf340RecursiveHelper(Node*, const ItemType&) const;
if needed
*----------------------------------------------------------------------*
public:
    LinkedBag();
    LinkedBag(const LinkedBag&);
    virtual ~LinkedBag();
    int getCu
entSize() const;
    bool isEmpty() const;
    bool add(const ItemType&);
    bool remove(const ItemType&);
    void clear();
    bool contains(const ItemType&) const;
    int getFrequencyOf(const ItemType&) const;
    std::vecto
ItemType> toVector() const;
private:
    Node* headPtr{ nullptr };
Pointer to first node
    int itemCount{ 0 };                    
Cu
ent count of bag items
    
pointer to the node or the null pointer
    Node* getPointerTo(const ItemType&) const;
};
Solution/PartB/LinkedBag.cpp
Solution/PartB/LinkedBag.cpp
  LinkedBag.cpp
  Created by Frank M. Ca
ano and Timothy M. Henry.
  Updated by Duc Ta
  Copyright (c) 2017 Pearson Education, Hoboken, New Jersey.
#include #include "Node.h"
#include "LinkedBag.h"
 PLEASE DO NOT CHANGE THIS FILE
templateLinkedBag::LinkedBag() : headPtr(nullptr), itemCount(0) {}
templateLinkedBag::LinkedBag(const LinkedBag& aBag) {
    itemCount = aBag.itemCount;
    Node* origChainPtr = aBag.headPtr;
    if (origChainPtr == nullptr) {
        headPtr = nullptr; 
    }
    else {
        headPtr = new Node();
        headPtr->setItem(origChainPtr->getItem());
        Node* newChainPtr = headPtr; 
        origChainPtr = origChainPtr->getNext();
        while (origChainPtr != nullptr)
        {
            ItemType nextItem = origChainPtr->getItem();
            Node* newNodePtr = new Node(nextItem);
            newChainPtr->setNext(newNodePtr);
            newChainPtr = newChainPtr->getNext();
            origChainPtr = origChainPtr->getNext();
        } 
        newChainPtr->setNext(nullptr);
    }
}
templateLinkedBag::~LinkedBag() {
    clear();
} 
templateool LinkedBag::isEmpty() const {
    return itemCount == 0;
}
templateint LinkedBag::getCu
entSize() const {
    return itemCount;
}
templateool LinkedBag::add(const ItemType& newEntry) {
    Node* nextNodePtr = new Node();
    nextNodePtr->setItem(newEntry);
    nextNodePtr->setNext(headPtr);  
    headPtr = nextNodePtr;
    itemCount++;
    return true;
}
templatestd::vecto
ItemType> LinkedBag::toVector() const {
    std::vecto
ItemType> bagContents;
    Node* curPtr = headPtr;
    int counter = 0;
    while ((curPtr != nullptr) && (counter < itemCount)) {
        bagContents.push_back(curPtr->getItem());
        curPtr = curPtr->getNext();
        counter++;
    }
    return bagContents;
}
templateool LinkedBag::remove(const ItemType& anEntry) {
    Node* entryNodePtr = getPointerTo(anEntry);
    bool canRemoveItem = !isEmpty() && (entryNodePtr != nullptr);
    if (canRemoveItem) {
        entryNodePtr->setItem(headPtr->getItem());
        Node* nodeToDeletePtr = headPtr;
        headPtr = headPtr->getNext();
        nodeToDeletePtr->setNext(nullptr);
        delete nodeToDeletePtr;
        nodeToDeletePtr = nullptr;
        itemCount--;
    }
    return canRemoveItem;
}
templatevoid LinkedBag::clear() {
    Node* nodeToDeletePtr = headPtr;
    while (headPtr != nullptr) {
        headPtr = headPtr->getNext();
        nodeToDeletePtr->setNext(nullptr);
        delete nodeToDeletePtr;
        nodeToDeletePtr = headPtr;
    }
    itemCount = 0;
} 
templateint LinkedBag::getFrequencyOf(const ItemType& anEntry) const {
    int frequency = 0;
    int counter = 0;
    Node* curPtr = headPtr;
    while ((curPtr != nullptr) && (counter < itemCount)) {
        if (anEntry == curPtr->getItem()) {
            frequency++;
        } 
        counter++;
        curPtr = curPtr->getNext();
    }
    return frequency;
}
templateool LinkedBag::contains(const ItemType& anEntry) const {
    return (getPointerTo(anEntry) != nullptr);
}
templateNode* LinkedBag::getPointerTo(const ItemType& anEntry) const {
    bool found = false;
    Node* curPtr = headPtr;
    while (!found && (curPtr != nullptr)) {
        if (anEntry == curPtr->getItem()) {
            found = true;
        }
        else {
            curPtr = curPtr->getNext();
        }
    }
    return curPtr;
} 
Solution/PartB/LinkedBag.h
LinkedBag.h
  Created by Frank M. Ca
ano and Timothy M. Henry.
Updated by Duc Ta
  Copyright (c) 2017 Pearson Education, Hoboken, New Jersey.
#pragma once
#include "Node.cpp"
#include "BagInterface.h"
PLEASE DO NOT CHANGE THIS FILE
templateclass LinkedBag : public BagInterface {
*--------------------------CSC340-------------------------------------*
public:
    bool removeSecondNode340();
    bool addEnd340(const ItemType&);
    int getCu
entSize340Iterative() const;
    int getCu
entSize340Recursive() const;
    int getCu
entSize340RecursiveNoHelper() const;
    int getFrequencyOf340Recursive(const ItemType&) const;
    int getFrequencyOf340RecursiveNoHelper(const ItemType&) const;
    ItemType removeRandom340();
private:
    int getCu
entSize340RecursiveHelper(Node*) const;
if needed
    int getFrequencyOf340RecursiveHelper(Node*, const ItemType&) const;
if needed
*----------------------------------------------------------------------*
public:
    LinkedBag();
    LinkedBag(const LinkedBag&);
    virtual ~LinkedBag();
    int getCu
entSize() const;
    bool isEmpty() const;
    bool add(const ItemType&);
    bool remove(const ItemType&);
    void clear();
    bool contains(const ItemType&) const;
    int getFrequencyOf(const ItemType&) const;
    std::vecto
ItemType> toVector() const;
private:
    Node* headPtr{ nullptr };
Pointer to first node
    int itemCount{ 0 };                    
Cu
ent count of bag items
    
pointer to the node or the null pointer
    Node* getPointerTo(const ItemType&)...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here