CS253: Software Development with C++

Fall 2020

Linked List

Linked List Lab

This lab concerns the linked lists and dynamic memory allocation.                 

These are tasks, not questions to be answered. All that you turn in is the resultant code.                 

  1. Copy the directory ~cs253/Lab/LinkedList to a convenient place in your home directory.
  2. Compile & link main.cc & ll.cc together.
  3. Create a Makefile so that you won’t have to type g++ again. Use at least -Wall.
  4. Run the resultant executable; observe how the program works. Reading the code may help.
  5. Fix the memory leak in .remove().
  6. Find uses of this->, which are always suspicious. Remove them. Does everything still work?
  7. .initialize() methods often indicate that the author doesn’t understand constructors. Turn them into ctors.
  8. Are your ctors using member initialization lists? Make them do so.
  9. The method .remove() uses a pointer argument to return a value. How crass—use a reference, instead.
  10. Add a method .print() that displays the list. Add another case (4. print) in main() that uses it.
  11. Using .print() is tacky. Replace it with an overloaded << operator so you can use << on a LinkedList object, just like any other type.
  12. Are there any remaining memory leaks? What happens when a LinkedList object is destroyed? Fix that.
  13. Create a tar file link.tar containing your work:
    tar -cvf link.tar Makefile main.cc ll.cc ll.h

How to submit your work:

In Canvas, check in the file link.tar to the assignment “Lab05”.                 

How to receive negative points:

Turn in someone else’s work.