a Linked List data structure from scratch solution

Topics:·         C/C++ Syntax
·         Pointers
·         Functions
·         Dynamic Allocation of Memory
·         Data Structures: Linked Lists
·         Object Orientation
Specifications:
You are to create a Linked List data structure from scratch.  This linked list should be Templated so that any data could be stored within it.
You will create a Linked List Class and a Node Class
The Linked List should contain the following methods in its public interface:
·         Constructor
·         Destructor
·         AddToFront(T data) – create a node containing T data and add it to the front of the list
·         AddToEnd(T data) – create a node containing T data and add it to eh end of the list
·         AddAtIndex(T data, int index) – create a node containing T data and add it to the list at index, return boolean for success or failure (optional: you could also return an integer with failure codes since this method can fail multiple ways)
·         NextNode – Move the current pointer to the next node, wraps to front if it navigates past the end
·         InsertAfterCurrent(T data) – Create a node containing T data and insert it after wherever the current pointer is pointing
·         RemoveCurrent() – Delete the current item and return its contents
·         RemoveAtIndex(int index) – delete the index # node in the list and return its contents
·         RemoveFromFront() – Delete first item and return its contents
·         RemoveFromEnd() – Delete last item and return its contents
·         RemoveFirst(T data) – find first instance of T data and remove it
·         RemoveAll(T data) – find each instance of T data and remove it
·         ElementExists(T data) – Returns a T/F if element exists in list
·         Find(T data) – Look for data in the list, return a pointer to its node
·         IndexOf(T data) – returns an index of the item in the list (zero-based)
·         RetrieveFront – returns the data contained in the first node, does not delete it
·         RetrieveEnd – returns the data contained in the last node, does not delete it
·         Retrieve(int index) – returns the data contained in node # index, does not delete it, returns null if index is out of bounds or data does not exist
·         ToArray – Create an array from the contents of the list and return it
·         Empty – Empty out the list, delete everything
·         Length – How many elements are in the list
More methods private or public should be created as needed to facilitate the functionality of the Interface methods.  If you feel your list needs more functionality, feel free to create it.
Node Class
·         Constructor
·         Destructor
·         Getters & Setters
The node class should be fairly rudimentary.  It should be templated so you can store anything in it.
Powered by