Double Linked List

there is an interactive demonstration of a double linked list HERE

For this assignment you will create a functional doubly linked list.

1. make it a template class
2. put all your function bodies inside the class
3. make your DListNode an inner class
4. copy over the testfiles and use ALL of them to test your code as well as your own test files
5. your code should have no compilation warnings
6. make your code such that no combination of function calls will result in a seg fault, throw exceptions when needed
7. do the standard file logging
8. Change  your class name, inner node name and FILENAME  to DLinkedList instead or SLinkedList.. you will lose points if you dont

be sure to look at the Doubly Linked List Demo, link on the main page it will help get an idea of the steps you need to take for the functions

use your Single Linked List files as a foundation
copy the main , LinkedList and Makefile from your last lab

you will provide the same functionality as the example

  Doubly Linked List Menu 
  i  Insert a value into the list                   
  a  Insert a value After a value                   
  d  Delete a value from the list (1st from front)  
  c  Does the list contain a specific value         
  p  Print the value returned by ToString           
  m  Show this menu                                        
  x  Exit                                        
  Enter selection: 

MAKE sure you output matches the examples when you redirect in the testfiles
MAKE sure your ToString output can be used on the viewlist page


in order to test you are going to want to 
  add values, 
  delete values, 
  add at the front, middle and back
  delete from the front, middle and back
  print out the ToString output and make sure 
     the head always has the address of the first node
     the tail always has the address of the last node
		 the next and previous pointers of every node are set correctly
  test that your contains work for both exiting values an non existing ones
  if your ToString output correctly works with the viewlist app it will help 
  identify problems