$ mkdir ~/cs170/tests $ mkdir ~/cs170/tests/test3 $ cd ~/cs170/tests/test3
This portion of the test is worth 30 total points. You may only access the Python documentation website. NO OTHER WEBSITES ARE PERMITTED. You are also not allowed to access any files other than those specified below. You should also follow all coding standards discussed thus far.
Download the linked_list.py
  file into your directory.  Add a method called
  double_all, which creates a duplicate node for every
  node in the linked list, and inserts it immediately after the
  original node.
  
>>> my_linked_list = LinkedList()
>>> my_linked_list.double_all()
>>> print(my_linked_list)
head -> None
>>> my_linked_list.append("Hello")
>>> my_linked_list.double_all()
>>> print(my_linked_list)
head -> "Hello" -> "Hello" -> None
>>> my_linked_list.append("World")
>>> my_linked_list.double_all()
>>> print(my_linked_list)
head -> "Hello" -> "Hello" -> "Hello" -> "Hello" -> "World" -> "World" -> None
  (15 points)
  In a file called question_9.py, create a class
  called ListIterator.  This class will be used to
  "iterate" over a linked list.  Your class should store attributes
  for the linked list being iterated over, as well as the "current" node.
  This class should also contain methods called get_next,
  and has_next.  The first method should return THE DATA
  from the current node, and move the current reference to the next
  node in the list.  has_next should return a boolean
  value, on whether or not there is any more data in the linked list.
  Keep in mind, if there are no more elements in the list,
  your get_next method should not crash.  It should print
  an error message, and return None
>>> my_linked_list = LinkedList()
>>> my_linked_list.append("Hello")
>>> my_linked_list.append("World")
>>> my_linked_list.append("!")
>>> print(my_linked_list)
head -> "Hello" -> "World" -> "!" -> None
>>> my_iterator = ListIterator(my_linked_list)
>>> print(my_iterator.has_next())
True
>>> print(my_iterator.get_next())
"Hello"
>>> print(my_iterator.get_next())
"World"
>>> print(my_iterator.get_next())
"!"
>>> print(my_iterator.has_next())
False
>>> print(my_iterator.get_next())
None
(15 points)
	In a file called list_coloring.py, create a function called
	color_list(list_size, colors), which takes an
	integer representing the size of an  \(n \times
	n\) 2-dimensional list, and an integer representing
	a number of colors.  Your function should return True if
	the given list can be "colored" using the specified number of
	colors.  A graph is considered colored if every location in the
	list has a different number than its cardinal neighbors.  For example:
	
[[0, 1], [1, 0]]Is colored using only 2 colors, because each location has a different value than its neighbors. However:
[[0, 1], [1, 1]]is not colored, because location \((1, 1)\) has the same color as \((0, 1)\) and \((1, 0)\).
Your program should return a valid coloring of the list.
(8 points)
When you have finished, create a tar file of your