Start off by creating a new application in class Lab06
of package edu.unca.cs.csci202
.
Add a second class to your project using the following as the project source
package edu.unca.cs.csci202; /** * * @author J Dean Brock <brock@unca.edu> */ public class GenNode<T> { private T item ; private GenNode<T> next ; GenNode(T item, GenNode<T> next) { this.item = item ; this.next = next ; } GenNode(T item) { this(item, null) ; } GenNode() { this(null, null) ; } public T getItem() { return item ; } public GenNode<T> getNext() { return next ; } public void setItem(T item) { this.item = item ; } public void setNext(GenNode<T> next) { this.next = next ; } }
Within your Lab06
class add the following two methods.
private static GenNode<Integer> makeGenNodeList(int size) { GenNode<Integer> ref = null ; for (int i=size-1; i>=0 ; --i) { ref = new GenNode<>(i, ref) ; } return ref ; } private static int sumGenNodeList(GenNode<Integer> node) { int sum = 0 ; while (node != null) { sum = sum + node.getItem() ; node = node.getNext() ; } return sum ; }
Task 1
Using the makeGenNodeList
and
sumGenNodeList
methods create a list of
three elements and sum up all its integers.
Task 2
Use the debugger to stop your program before the call to
sumGenNodeList
and examine the list of three
elements. You should be able to follow the links.
Task 3
Add an additional makeGenNodeList
method with
two arguments, that first is a starting integer and the second
is the length.
For example, the call makeGenNodeList(3, 3)
generate a list that contains 3, 4, and 5.
Call your new routine to generate the list
containing 3, 4, and 5 and use sumGenNodeList
to test your code.
By the way, it is perfectly OK to have two methods with the same name. This is called polymorpism.
Task 4
Write a method that is passed a GenNode
that is
the head of a list and returns the GenNode
that is the tail of the list.
Your method will traverse the entire list until it reaches
one whose next element is null
.
If your routine is passed null
, it should also return
null
.
Test your routine on the two lists you have created.
Task 5
If you didn’t write a generic method in
Task 4, modify your routine for be generic.
Take a look at the
Java tutorial on generic methods or your textbook to see how this is
done.
Start by putting <T>
before the return type.
Of course, you do need to test your new method.
Task 6
Now write a routine that takes two parameters, a
GenNode
l
and
an integer n
and prints the
first n
elements of l
.
If l
has less than
n
elements, stop at the last.