Question: Write in C++: Unordered Sets |As explained in this chapter, a set is a collection of distinct elements of the same type. Design the class

Write in C++:

Unordered Sets |As explained in this chapter, a set is a collection of distinct elements of the same type. Design the class unorderedSetType, derived from the class unorderedArrayListType, to manipulate sets. Note that you need to redefine only the functions insertAt, insertEnd, and replaceAt. If the item to be inserted is already in the list, the functions insertAt and insertEnd output an appropriate message, such as 13 is already in the set. Similarly, if the item to be replaced is already in the list, the function replaceAt outputs an appropriate message. Also, write a program to test your class.

Please write 2 files - (main.cpp) (unorderedSetTypelmp.cpp)

Test Case 1:

Input: 2 3 4 9 12 15 95 54 4 13

Expected Output: 2 3 9 12 15 95 54 / 13 is not in intList

Test Case 2:

Input: 58 85 74 95 62 51 4 999 999 999

Expected Output: 58 85 74 95 62 51 4 / 999 is not in intList

Given Files:  

//arrayListTypelmp.cpp

#include

#include "arrayListType.h"

using namespace std;

bool arrayListType::isEmpty() const

{

return (length == 0);

} //end isEmpty

bool arrayListType::isFull() const

{

return (length == maxSize);

} //end isFull

int arrayListType::listSize() const

{

return length;

} //end listSize

int arrayListType::maxListSize() const

{

return maxSize;

} //end maxListSize

void arrayListType::print() const

{

for (int i = 0; i < length; i++)

cout << list[i] << " ";

cout << endl;

} //end print

bool arrayListType::isItemAtEqual(int location, int item) const

{

if (location < 0 || location >= length)

{

cout << "The location of the item to be removed "

<< "is out of range." << endl;

return false;

}

else

return (list[location] == item);

} //end isItemAtEqual

void arrayListType::removeAt(int location)

{

if (location < 0 || location >= length)

cout << "The location of the item to be removed "

<< "is out of range." << endl;

else

{

for (int i = location; i < length - 1; i++)

list[i] = list[i+1];

length--;

}

} //end removeAt

void arrayListType::retrieveAt(int location, int& retItem) const

{

if (location < 0 || location >= length)

cout << "The location of the item to be retrieved is "

<< "out of range" << endl;

else

retItem = list[location];

} //end retrieveAt

void arrayListType::clearList()

{

length = 0;

} //end clearList

arrayListType::arrayListType(int size)

{

if (size <= 0)

{

cout << "The array size must be positive. Creating "

<< "an array of the size 100." << endl;

maxSize = 100;

}

else

maxSize = size;

length = 0;

list = new int[maxSize];

} //end constructor

arrayListType::~arrayListType()

{

delete [] list;

} //end destructor

arrayListType::arrayListType(const arrayListType& otherList)

{

maxSize = otherList.maxSize;

length = otherList.length;

list = new int[maxSize]; //create the array

for (int j = 0; j < length; j++) //copy otherList

list [j] = otherList.list[j];

}//end copy constructor //unorderedArrayListType.h

#ifndef H_unorderedArrayListType

#define H_unorderedArrayListType

#include "arrayListType.h"

class unorderedArrayListType: public arrayListType

{

public:

virtual void insertAt(int location, int insertItem);

virtual void insertEnd(int insertItem);

virtual void replaceAt(int location, int repItem);

virtual int seqSearch(int searchItem) const;

virtual void remove(int removeItem);

unorderedArrayListType(int size = 100);

//Constructor

};

#endif //unorderedArrayListTypelmp.cpp

#include

#include "unorderedArrayListType.h"

using namespace std;

void unorderedArrayListType::insertAt(int location,

int insertItem)

{

if (location < 0 || location >= maxSize)

cout << "The position of the item to be inserted "

<< "is out of range." << endl;

else if (length >= maxSize) //list is full

cout << "Cannot insert in a full list" << endl;

else

{

for (int i = length; i > location; i--)

list[i] = list[i - 1]; //move the elements down

list[location] = insertItem; //insert the item at

//the specified position

length++; //increment the length

}

} //end insertAt

void unorderedArrayListType::insertEnd(int insertItem)

{

if (length >= maxSize) //the list is full

cout << "Cannot insert in a full list." << endl;

else

{

list[length] = insertItem; //insert the item at the end

length++; //increment the length

}

} //end insertEnd

int unorderedArrayListType::seqSearch(int searchItem) const

{

int loc;

bool found = false;

loc = 0;

while (loc < length && !found)

if (list[loc] == searchItem)

found = true;

else

loc++;

if (found)

return loc;

else

return -1;

} //end seqSearch

void unorderedArrayListType::remove(int removeItem)

{

int loc;

if (length == 0)

cout << "Cannot delete from an empty list." << endl;

else

{

loc = seqSearch(removeItem);

if (loc != -1)

removeAt(loc);

else

cout << "The item to be deleted is not in the list."

<< endl;

}

} //end remove

void unorderedArrayListType::replaceAt(int location, int repItem)

{

if (location < 0 || location >= length)

cout << "The location of the item to be "

<< "replaced is out of range." << endl;

else

list[location] = repItem;

} //end replaceAt

unorderedArrayListType::unorderedArrayListType(int size)

: arrayListType(size)

{

} //end constructor

//unorderedSetType.h

#ifndef H_unorderedSetType

#define H_unorderedSetType

#include "unorderedArrayListType.h"

class unorderedSetType: public unorderedArrayListType

{

public:

void insertAt(int location, int insertItem);

void insertEnd(int insertItem);

void replaceAt(int location, int repItem);

unorderedSetType(int size = 100);

//Constructor

};

#endif

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!