The only file you will need for this assignment is the List.h file that we wrote in class. Our testList.cpp file might also be of use as a starting point for your test file.
For this assignment, you must work indivicually on your program.
Please make sure you adhere to the policies on academic integrity in this regard.
Similar to our last program with vectors, we will add some functionality to our list class written during lecture. In addition, you will implement sorting algorithms for both the vector and the list classes.
Please write the following functions described below in our List class. (Please download List.h from the course schedule webpage and insert your functions into this class, then submit the entire List.h file via email by the due date.)
NOTE: For these functions, all iterators and references to elements remain valid. Note that this means you may NOT remove elements and readd them, since this will allocate new nodes and invalidate the pointers/iterators which already exist. You'll have to get down and dirty with pointers for most of these.
Returns the item in the list which is at position index.
Replace all instances of val1 in the current list with val2.
Exchanges the content of the current list by the content of other, which is another list object containing elements of the same type. Sizes may differ.
After the call to this member function, the elements in this container are those which were in other before the call, and the elements of other are those which were in this. All iterators, references and pointers remain valid for the swapped objects.
Reverses the order of the elements in the list container.
You will also be implementing two sorting algorithms for this assignment, one in the list class and one in the vector class. Add them to each .h file as a member function, and clearly indicate in the name and the comments which algorithms you have chosen. Note that I don't care which algorithms you implement in particular, but you are required to do 2 different ones, one in each class.
You may wish to review these and try to take into account which sorting algorithms are easier to implement in each class!
For extra credit, you may also implement the following function in the list class:
Moves elements from list other into the current list before the specified position, effectively inserting the specified elements into the list and removing them from other.
This increases _size by the size that other (initially) was, and reduces the size of other to 0 ( whenever other is not the same as *this ).
The operation does not involve the construction or destruction of any element object, and it is performed in constant time. (So back to the pointers.)
Source Code for Vector
Submit your revised Vector.h file.
Source Code for List
Submit your revised List.h file (with the sorting algorithm added).
Submit your revised testVector.cpp file.
An overview and run time analysis of the functions in your Vector class, including comments on how you tested your code, and any further comments you wish to make to the grader.
The assignment is worth 10 points. One point will be based on a checkpoint with the instructor on Nov. 1, at which time you will be expected to have completed at least 15 lines of code for the assignment. One point will be based on your testList.cpp file. The remaining 8 points will be based on the assigned functions (including commenting, indenting, and meaningful variable names).