solved: Use C++ for the following: – implement the ListArray ADT [the…

  

QuestionAnswered step-by-stepUse C++ for the following: – implement the ListArray ADT [the…Use C++ for the following:- implement the ListArray ADT [the declaration is given in ListArray.h]- implement the following operations:- constructor, assignment operator, destructor- insert, remove, replace, clear- isFull, isEmpty- gotoBeginning, gotoEnd, gotoNext, gotoPrior, getCursor- implement the member function moveToNth(…) that removes the item marked by the cursor and inserts it as the nth element ofthe list; test you implementation by turning the flag LAB3_TEST2 from 0 to 1 in config.h;- implement the ListArray member function find(…) that searches for the element given as a parameter; the search starts at the cursor and stops when it finds the element or at the end of the list; the cursor remains on the last position searched; test you implementation by turning the flag LAB3_TEST3 from 0 to 1 in config.h;*********ListArray.h************//——————————————————————–//// Laboratory 3 ListArray.h// **Instructor’s Solution**// Class declaration for the array implementation of the List ADT////——————————————————————–#ifndef LISTARRAY_H#define LISTARRAY_H#include #include using namespace std;#pragma warning( disable : 4290 )template < typename DataType >class List{public:static const int MAX_LIST_SIZE = 10; // Default maximum list size// ConstructorsList ( int maxNumber = MAX_LIST_SIZE ); // Default constructorList ( const List& source ); // Copy constructor  // Overloaded assignment operatorList& operator= ( const List& source );// Destructorvirtual ~List ();// List manipulation operationsvirtual void insert ( const DataType& newDataItem ) // Insert after cursorthrow ( logic_error );  void remove () throw ( logic_error ); // Remove data itemvirtual void replace ( const DataType& newDataItem ) // Replace data itemthrow ( logic_error );void clear (); // Clear list// List status operationsbool isEmpty () const; // List is emptybool isFull () const; // List is full// List iteration operationsvoid gotoBeginning () // Go to beginningthrow ( logic_error );void gotoEnd () // Go to endthrow ( logic_error );bool gotoNext () // Go to next data itemthrow ( logic_error );bool gotoPrior () // Go to prior data itemthrow ( logic_error );DataType getCursor () constthrow ( logic_error ); // Return data item// Output the list structure — used in testing/debuggingvirtual void showStructure () const;// In-lab operationsvoid moveToNth ( int n ) // Move data item to pos. nthrow ( logic_error );  bool find ( const DataType& searchDataItem ) // Find data itemthrow ( logic_error );  protected:// Data membersint maxSize,size, // Actual number of data item in the listcursor; // Cursor array indexDataType *dataItems; // Array containing the list data item};#endif************config.h***********************/*** List class (Lab 3/Lab 4) configuration file.* Activate test #N by defining the corresponding LAB3_TESTN to have the value 1.** Because you will copy the List class code to your ordered list directory, having* two “config.h” files presented the risk of accidentally replacing the one in the* ordered list directory. So the two configuration files are combined for labs 3 and 4.** NOTE!!! There was an error in the printed book. TEST1 shows up twice in the book.* The basic List implementation uses TEST1 as described below, then exercise 2* is activated by TEST2*/#define LAB3_TEST1 0 // 0 => test with char, 1 => test with int#define LAB3_TEST2 0 // Prog exercise 2: moveToNth#define LAB3_TEST3 0 // Prog exercise 3: find/*** Ordered list class tests.*/#define LAB4_TEST1 0 // merge: programming exercise 2#define LAB4_TEST2 0 // subset: programming exercise 3 **********ListArray.cpp********#include “ListArray.h”template < typename DataType >List::List ( int maxNumber ){}template < typename DataType >List::List ( const List& source ){}  template < typename DataType >List& List::operator= ( const List& source ){return *this;}template < typename DataType >List::~List (){}template < typename DataType >void List::insert ( const DataType& newDataItem )throw ( logic_error ){}template < typename DataType >void List::remove () throw ( logic_error ){}template < typename DataType >void List::replace ( const DataType& newDataItem )throw ( logic_error ){}template < typename DataType >void List::clear (){}template < typename DataType >bool List::isEmpty () const{return false;}template < typename DataType >bool List::isFull () const{return false;}template < typename DataType >void List::gotoBeginning ()throw ( logic_error ){}template < typename DataType >void List::gotoEnd ()throw ( logic_error ){}template < typename DataType >bool List::gotoNext ()throw ( logic_error ){return false;}template < typename DataType >bool List::gotoPrior ()throw ( logic_error ){return false;}template < typename DataType >DataType List::getCursor () constthrow ( logic_error ){DataType t;return t;}#include “show3.cpp”template < typename DataType >void List::moveToNth ( int n )throw ( logic_error ){}template < typename DataType >bool List::find ( const DataType& searchDataItem )throw ( logic_error ){return false;} **************show3.cpp*************//——————————————————————–//// Laboratory 3 show3.cpp//// Array implementation of the showStructure operation for the// List ADT////——————————————————————–#include “ListArray.h”template void List:: showStructure () const// outputs the data items in a list. if the list is empty, outputs// “empty list”. this operation is intended for testing/debugging// purposes only.{int j; // loop counterif ( size == 0 )cout << "empty list" << endl;// The Ordered List code blows up below. Since this is just debugging// code, we check for whether the OrderedList is defined, and if so,// print out the key value. If not, we try printing out the entire item.// Note: This assumes that you have used the double-inclusion protection// in your OrderedList.cpp file by doing a "#ifndef ORDEREDLIST_CPP", etc.// If not, you will need to comment out the code in the section under// the "else", otherwise the compiler will go crazy in lab 4.// The alternative is to overload operator<< for all data types used in// the ordered list.else{cout << "size = " << size<< " cursor = " << cursor << endl;for ( j = 0 ; j < maxSize ; j++ )cout << j << "t";cout << endl;for ( j = 0 ; j < size ; j++ ) {if( j == cursor ) {cout << "[";cout << dataItems[j]#ifdef ORDEREDLIST_CPP.getKey()#endif;cout << "]";cout << "t";}elsecout << dataItems[j]#ifdef ORDEREDLIST_CPP.getKey()#endif<< "t";}cout << endl;}} ***************test3.cpp************//--------------------------------------------------------------------//// Laboratory 3 test3.cpp//// Test program for the operations in the List ADT////--------------------------------------------------------------------#include using namespace std;// Because of C++ template implementations, must include source for templated class// That is ugly, but it is required.#include “ListArray.cpp”#include “config.h”void print_help();void showTwoLists(List list1, List list2); // Displays two lists that are supposedly equivalent.int main(){// hack: put a “try/catch” with list creation code?// we need to demonstrate use of the try/catch syntax.#if LAB3_TEST1List testList(8); // Test list to test with intsList copyList(testList); // Used to test copy constructorList assignList; // Used to test assignment operatorint testData; // List data item#elseList testList(8); // Test list to test with charsList copyList(testList); // Used to test copy constructorList assignList; // Used to test assignment operatorchar testData; // List data item#endifint n; // Position within listchar cmd; // Input commandprint_help();do{testList.showStructure(); // Output listcout << endl << "Command: "; // Read commandcin >> cmd;if ( cmd == ‘+’ || cmd == ‘=’ || cmd == ‘?’ )cin >> testData;else if ( cmd == ‘M’ || cmd == ‘m’ )cin >> n;switch ( cmd ){case ‘H’ : case ‘h’:print_help();break;case ‘+’ : // insertcout << "Insert " << testData << endl;try{testList.insert(testData);}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the insert function.";}break;case '-' : // removecout << "Remove the data item marked by the cursor"<< endl;try{testList.remove();}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the remove function.";}break;case '=' : // replacecout << "Replace the data item marked by the cursor "<< "with " << testData << endl;try{testList.replace(testData);}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the replace function.";}break;case '@' : // getCursortry{cout << "Data item marked by the cursor is "<< testList.getCursor() << endl;}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the getCursor function.";}break;case '<' : // gotoBeginningcout << "Go to the beginning of the list" << endl;try{testList.gotoBeginning();}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the gotoBeginning function.";}break;case '>‘ : // gotoEndcout << "Go to the end of the list" << endl;try{testList.gotoEnd();}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the gotoEnd function.";}break;case 'N' : case 'n' : // gotoNexttry{if ( testList.gotoNext() )cout << "Go to the next data item" << endl;elsecout << "Failed -- either at the end of the list "<< "or the list is empty" << endl;}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the gotoNext function.";}break;case 'P' : case 'p' : // gotoPriortry{if ( testList.gotoPrior() )cout << "Go to the prior data item" << endl;elsecout << "Failed -- either at the beginning of the "<< "list or the list is empty" << endl;}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the gotoPrior function.";}break;case 'C' : case 'c' : // clearcout << "Clear the list" << endl;testList.clear();break;case 'E' : case 'e' : // isEmptyif ( testList.isEmpty() )cout << "List is empty" << endl;elsecout << "List is NOT empty" << endl;break;case 'F' : case 'f' : // isFullif ( testList.isFull() )cout << "List is full" << endl;elsecout << "List is NOT full" << endl;break;case '!' :showTwoLists(copyList, testList);break;case '#' :assignList.insert('x');assignList = testList;showTwoLists(assignList, testList);break;#if LAB3_TEST2case 'M' : case 'm' : // In-lab Exercise 2cout << "Move the data item marked by the cursor to "<< "posititon " << n << endl;try{testList.moveToNth(n);}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the moveToNth function.";}break;#endif // LAB3_TEST1#if LAB3_TEST3case '?' : // In-lab Exercise 3try{if ( testList.find(testData) )cout << "Found" << endl;elsecout << "NOT found" << endl;}catch (logic_error &e){cerr << "EXCEPTION: A logic error occurred in the find function.";}break;#endif // LAB3_TEST3case 'Q' : case 'q' : // Quit test programbreak;default : // Invalid commandcout << "Inactive or invalid command" << endl;}}while ( cin && cmd != 'Q' && cmd != 'q' );if( !cin ) {cout << "Input error" << endl;}return 0;}void showTwoLists(List list1, List list2) {// Variables should match, but dynamic memory buffer must be differentcout << "Look at the two lists below and decide whether they are equivalent" << endl;cout << "List 1: ";list1.showStructure();cout << "List 2: ";list2.showStructure();cout << endl;}void print_help(){cout << endl << "Commands:" << endl;cout << " H : Help (displays this message)" << endl;cout << " +x : Insert x after the cursor" << endl;cout << " - : Remove the data item marked by the cursor" << endl;cout << " =x : Replace the data item marked by the cursor with x"<< endl;cout << " @ : Display the data item marked by the cursor" << endl;cout << " < : Go to the beginning of the list" << endl;cout << " > : Go to the end of the list” << endl;cout << " N : Go to the next data item" << endl;cout << " P : Go to the prior data item" << endl;cout << " C : Clear the list" << endl;cout << " E : Empty list?" << endl;cout << " F : Full list?" << endl;cout << " ! : Test copy constructor" << endl;cout << " # : Test assignment operator" << endl;cout << " M n : Move data item marked by cursor to pos. n ("#if LAB3_TEST2<< "Active "#else<< "Inactive "#endif // LAB3_TEST2<< ": In-lab Ex. 2)" << endl;cout << " ?x : Search rest of list for x ("#if LAB3_TEST3<< "Active "#else<< "Inactive "#endif // LAB3_TEST3<< ": In-lab Ex. 3)" << endl;cout << " Q : Quit the test program" << endl;cout << endl;}    Computer ScienceEngineering & TechnologyObject-Oriented ProgrammingShare Question

Don't use plagiarized sources. Get Your Custom Essay on
solved: Use C++ for the following: – implement the ListArray ADT [the…
Just from $10/Page
Order Essay
Place your order
(550 words)

Approximate price: $22

Calculate the price of your order

550 words
We'll send you the first draft for approval by September 11, 2018 at 10:52 AM
Total price:
$26
The price is based on these factors:
Academic level
Number of pages
Urgency
Basic features
  • Free title page and bibliography
  • Unlimited revisions
  • Plagiarism-free guarantee
  • Money-back guarantee
  • 24/7 support
On-demand options
  • Writer’s samples
  • Part-by-part delivery
  • Overnight delivery
  • Copies of used sources
  • Expert Proofreading
Paper format
  • 275 words per page
  • 12 pt Arial/Times New Roman
  • Double line spacing
  • Any citation style (APA, MLA, Chicago/Turabian, Harvard)

Our guarantees

Delivering a high-quality product at a reasonable price is not enough anymore.
That’s why we have developed 5 beneficial guarantees that will make your experience with our service enjoyable, easy, and safe.

Money-back guarantee

You have to be 100% sure of the quality of your product to give a money-back guarantee. This describes us perfectly. Make sure that this guarantee is totally transparent.

Read more

Zero-plagiarism guarantee

Each paper is composed from scratch, according to your instructions. It is then checked by our plagiarism-detection software. There is no gap where plagiarism could squeeze in.

Read more

Free-revision policy

Thanks to our free revisions, there is no way for you to be unsatisfied. We will work on your paper until you are completely happy with the result.

Read more

Privacy policy

Your email is safe, as we store it according to international data protection rules. Your bank details are secure, as we use only reliable payment systems.

Read more

Fair-cooperation guarantee

By sending us your money, you buy the service we provide. Check out our terms and conditions if you prefer business talks to be laid out in official language.

Read more
colle writers

Order your essay today and save 30% with the discount code ESSAYSHELP