Question
In C++, need LispArray.cpp to be modified. /////////////ListArray.cpp///////// #include ListArray.h template List ::List ( int maxNumber ) { } template List ::List ( const List&
In C++, need LispArray.cpp to be modified.
/////////////ListArray.cpp/////////
#include "ListArray.h"
template
List
{
}
template
List
{
}
template
List
{
return *this;
}
template
List
{
}
template
void List
throw ( logic_error )
{
}
template
void List
{
}
template
void List
throw ( logic_error )
{
}
template
void List
{
}
template
bool List
{
return false;
}
template
bool List
{
return false;
}
//*********************************************************************//
// //
// Part 2 //
// //
//*********************************************************************//
template
void List
throw ( logic_error )
{
}
template
void List
throw ( logic_error )
{
}
template
bool List
throw ( logic_error )
{
return false;
}
template
bool List
throw ( logic_error )
{
return false;
}
template
DataType List
throw ( logic_error )
{
DataType t;
return t;
}
template
void List
throw ( logic_error )
{
}
template
bool List
throw ( logic_error )
{
return false;
}
template
void List
// 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 counter
if (size == 0)
cout
// 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
// the ordered list.
else
{
cout
for (j = 0; j
cout
cout
for (j = 0; j
if (j == cursor) {
cout
cout
#ifdef ORDEREDLIST_CPP
.getKey()
#endif
;
cout
cout
}
else
cout
#ifdef ORDEREDLIST_CPP
.getKey()
#endif
}
cout
}
}
///////////////////////////show3.cpp///////////////////////
//--------------------------------------------------------------------
//
// Laboratory 3 show3.cpp
//
// Array implementation of the showStructure operation for the
// List ADT
//
//--------------------------------------------------------------------
#include "ListArray.h"
template
void List
// 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 counter
if ( size == 0 )
cout
// 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
// the ordered list.
else
{
cout
for ( j = 0 ; j
cout
cout
for ( j = 0 ; j
if( j == cursor ) {
cout
cout
#ifdef ORDEREDLIST_CPP
.getKey()
#endif
;
cout
cout
}
else
cout
#ifdef ORDEREDLIST_CPP
.getKey()
#endif
}
cout
}
}
/////////////////////////Sumintegers.cpp////////////////////////
#include
#include "ListArray.cpp" // Note that we are including the file
// containing the code -- NOT the header file
using namespace std;
int main ()
{
List
int newSample, // Input sample
sum = 0; // Sum of the input samples
// Read in a set of samples from the keyboard.
cout
while ( cin >> newSample ) {
samples.insert(newSample);
}
// Sum the samples and output the result.
if ( ! samples.isEmpty() ) // If have data
{
samples.gotoBeginning(); // First set cursor to beginning of list
do {
sum += samples.getCursor(); // Add data item to running sum
} while ( samples.gotoNext() ); // Go to next data item (if any)
}
cout
return 0;
}
/////////////////////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
int main()
{
// hack: put a "try/catch" with list creation code?
// we need to demonstrate use of the try/catch syntax.
#if LAB3_TEST1
List
List
List
int testData; // List data item
#else
List
List
List
char testData; // List data item
#endif
int n; // Position within list
char cmd; // Input command
print_help();
do
{
testList.showStructure(); // Output list
cout
cin >> 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 '+' : // insert
cout
try
{
testList.insert(testData);
}
catch (logic_error &e)
{
cerr
}
break;
case '-' : // remove
cout
try
{
testList.remove();
}
catch (logic_error &e)
{
cerr
}
break;
case '=' : // replace
cout
try
{
testList.replace(testData);
}
catch (logic_error &e)
{
cerr
}
break;
case '@' : // getCursor
try
{
cout
}
catch (logic_error &e)
{
cerr
}
break;
case '
cout
try
{
testList.gotoBeginning();
}
catch (logic_error &e)
{
cerr
}
break;
case '>' : // gotoEnd
cout
try
{
testList.gotoEnd();
}
catch (logic_error &e)
{
cerr
}
break;
case 'N' : case 'n' : // gotoNext
try
{
if ( testList.gotoNext() )
cout
else
cout
}
catch (logic_error &e)
{
cerr
}
break;
case 'P' : case 'p' : // gotoPrior
try
{
if ( testList.gotoPrior() )
cout
else
cout
}
catch (logic_error &e)
{
cerr
}
break;
case 'C' : case 'c' : // clear
cout
testList.clear();
break;
case 'E' : case 'e' : // isEmpty
if ( testList.isEmpty() )
cout
else
cout
break;
case 'F' : case 'f' : // isFull
if ( testList.isFull() )
cout
else
cout
break;
case '!' :
showTwoLists(copyList, testList);
break;
case '#' :
assignList.insert('x');
assignList = testList;
showTwoLists(assignList, testList);
break;
#if LAB3_TEST2
case 'M' : case 'm' : // In-lab Exercise 2
cout
try
{
testList.moveToNth(n);
}
catch (logic_error &e)
{
cerr
}
break;
#endif // LAB3_TEST1
#if LAB3_TEST3
case '?' : // In-lab Exercise 3
try
{
if ( testList.find(testData) )
cout
else
cout
}
catch (logic_error &e)
{
cerr
}
break;
#endif // LAB3_TEST3
case 'Q' : case 'q' : // Quit test program
break;
default : // Invalid command
cout
}
}
while ( cin && cmd != 'Q' && cmd != 'q' );
if( !cin ) {
cout
}
return 0;
}
void showTwoLists(List
// Variables should match, but dynamic memory buffer must be different
cout
cout
list1.showStructure();
cout
list2.showStructure();
cout
}
void print_help()
{
cout
cout
cout
cout
cout
cout
cout
cout : Go to the end of the list"
cout
cout
cout
cout
cout
cout
cout
cout
#if LAB3_TEST2
#else
#endif // LAB3_TEST2
cout
#if LAB3_TEST3
#else
#endif // LAB3_TEST3
cout
cout
}
///////////////////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
class List
{
public:
static const int MAX_LIST_SIZE = 10; // Default maximum list size
// Constructors
List ( int maxNumber = MAX_LIST_SIZE ); // Default constructor
List ( const List& source ); // Copy constructor
// Overloaded assignment operator
List& operator= ( const List& source );
// Destructor
virtual ~List ();
// List manipulation operations
virtual void insert ( const DataType& newDataItem ) // Insert after cursor
throw ( logic_error );
void remove () throw ( logic_error ); // Remove data item
virtual void replace ( const DataType& newDataItem ) // Replace data item
throw ( logic_error );
void clear (); // Clear list
// List status operations
bool isEmpty () const; // List is empty
bool isFull () const; // List is full
// List iteration operations
void gotoBeginning () // Go to beginning
throw ( logic_error );
void gotoEnd () // Go to end
throw ( logic_error );
bool gotoNext () // Go to next data item
throw ( logic_error );
bool gotoPrior () // Go to prior data item
throw ( logic_error );
DataType getCursor () const
throw ( logic_error ); // Return data item
// Output the list structure -- used in testing/debugging
virtual void showStructure () const;
// In-lab operations
void moveToNth ( int n ) // Move data item to pos. n
throw ( logic_error );
bool find ( const DataType& searchDataItem ) // Find data item
throw ( logic_error );
protected:
// Data members
int maxSize,
size, // Actual number of data item in the list
cursor; // Cursor array index
DataType *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
Source code download the attached zip file. It contains the Visual Studio project that you are required to modify. Exercises: implement the ListArray ADT [the declaration is given in ListArray.h implement the following operations: .gotoBeginning, gotoEnd, gotoNext, gotoPrior, getcursor (40 points) Programming Exercise 2: implement the member function move ToNth(...) that removes the item marked by the cursor and inserts it as the nth element of the list test your implementation by turning the flag LAB3_TEST2 from 0 to 1 in config.h; (30 points) Programming Exercise 3: 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 your implementation by turning the flag LAB3_TEST3 from 0 to 1 in config.h; (30 points) Source code download the attached zip file. It contains the Visual Studio project that you are required to modify. Exercises: implement the ListArray ADT [the declaration is given in ListArray.h implement the following operations: .gotoBeginning, gotoEnd, gotoNext, gotoPrior, getcursor (40 points) Programming Exercise 2: implement the member function move ToNth(...) that removes the item marked by the cursor and inserts it as the nth element of the list test your implementation by turning the flag LAB3_TEST2 from 0 to 1 in config.h; (30 points) Programming Exercise 3: 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 your implementation by turning the flag LAB3_TEST3 from 0 to 1 in config.h; (30 points)
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access with AI-Powered Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started