Depois de muita pesquisa, descobri o site OFICIAL e LIVRE.
http://wps.prenhall.com/wps/media/objects/2238/2292414/ch17.zip
Tem vários códigos que o professor irar utilizar.
Arquivo: List.java
class ListNode{
//package access membres; List can access these directly
Object data;
ListNode nextNode;
//construtor creates a ListNode that refes to object
ListNode(Object object)
{
this(object, null);
}//end ListNode one-argument constructor
//constructor creates ListNode that refers to
//Object and to nest ListNode
ListNode(Object object, ListNode node)
{
data=object;
nextNode=node;
}//end ListNode two-arguments constructor
//return reference to data in node
Object getObject()
{
return data; // return Object in this node
} //end method getObject
//return reference to next noce in list
ListNode getNext()
{
return nextNode; // get next node
} // end method getNext
} // end class ListNode
//class List definition
public class List
{
private ListNode firstNode;
private ListNode lastNode;
private String name; //string like “list” used In printing
// constructor creats empty List with “list” as the name
public List()
{
this(“list”);
}
// end List no-argument constructor
// construtor creates an empty List with a name
public List(String listName)
{
name = listName;
firstNode = lastNode = null;
} // end List one-argument constructor
// insert Object at front of List
public void insertAtFront(Object insertItem)
{
if(isEmpty()) // firstNode and lasNode refer to same object
firstNode = lastNode = new ListNode(insertItem);
else // firstNode refers to new node
firstNode = new ListNode(insertItem, firstNode);
} // end method insertAtFront
// insert Object at end of List
public void insertAtBack(Object insertItem)
{
if(isEmpty()) // firstNode and lastNode refer to same Object
firstNode = lastNode = new ListNode(insertItem);
else // lastNode’s nextNode refers to new mode
lastNode = lastNode.nextNode = new ListNode(insertItem);
} // end method insertAtBack
// remove first node from list
public Object removeFromFront() throws EmptyListException
{
if(isEmpty()) // throw exception if List is empty
throw new EmptyListException(name);
Object removedItem = firstNode.data; // retrieve data begin removed
// update references firstNode and lastNode
if(firstNode==lastNode)
firstNode = lastNode = null;
else
firstNode = firstNode.nextNode;
return removedItem; // return removed node data
} // end method removeFromFront
// remove last node from list
public Object removeFromBack() throws EmptyListException
{
if(isEmpty()) //throw exception if List is empty
throw new EmptyListException(name);
Object removedItem = lastNode.data; // retrieve data being removed
//update references firstNode an lastNode
if(firstNode == lastNode)
firstNode = lastNode = null;
else // locate new last node
{
ListNode current = firstNode;
while (current.nextNode !=lastNode)
current=current.nextNode;
lastNode =current;
current.nextNode =null;
}
return removedItem;
}
public boolean isEmpty()
{
return firstNode==null;
}
public void print()
{
if (isEmpty())
{
System.out.printf(“Empty %s\n is:”,name);
return;
}
System.out.printf( “The %s is:”,name);
ListNode current=firstNode;
while(current!=null)
{
System.out.printf(“%s”, current.data);
current=current.nextNode;
}
System.out.println(“\n”);
}
}
Arquivo: EmptyListException.javapublic class EmptyListException extends RuntimeException
{
public EmptyListException()
{
this(“List”);
}
public EmptyListException (String name)
{
super(name+”is empty”);
}
}
Arquivo: ListTest.javapublic class ListTest
{
public static void main(String args[])
{
List list=new List(); // create the List container
//insert integers in list
list.insertAtFront(-1);
list.print();
list.insertAtFront(0);
list.print();
list.insertAtBack(1);
list.print();
list.insertAtBack(5);
list.print();
//remove objects from list;print after each removal
try
{
Object removedObject=list.removeFromFront();
System.out.printf(“% removed\n”,removedObject);
list.print();
removedObject=list.removeFromFront();
System.out.printf(“% removed\n”,removedObject);
list.print();
removedObject=list.removeFromBack();
System.out.printf(“% removed\n”,removedObject);
list.print();
removedObject=list.removeFromBack();
System.out.printf(“% removed\n”,removedObject);
list.print();
}// endtry
catch(EmptyListException emptyListException)
{
emptyListException.printStackTrace();
}//end catch
}//end main
}//end class ListTest