package lab04;
import java.util.Iterator;
class Node<T>{
private T nodeData;
private Node<T> nextNode;
public Node( T newData, Node<T> newNextNode ){
nodeData = newData;
nextNode = newNextNode;
}
public T getData(){
return nodeData;
}
public Node<T> getNextNode(){
return nextNode;
}
public void setData(T newData){
nodeData = newData;
}
public void setNextNode( Node<T> newNextNode ){
nextNode = newNextNode;
}
}
public class LinkedList<T> implements Iterable<T> {
private Node<T> headNode;
public LinkedList(){
headNode = null;
}
public void addToHead( T newNodeData ){
headNode = new Node<T>( newNodeData, headNode );
}
public T deleteFromHead() throws Exception{
if( headNode != null ) {
T headNodeData = headNode.getData();
headNode = headNode.getNextNode();
return headNodeData;
} else
throw new Exception("deleteFromHead(): Linked List is empty.");
}
public ListIterator<T> iterator(){
return new ListIterator<T>( headNode );
}
static class ListIterator<T> implements Iterator<T> {
private Node<T> currentNode;
public ListIterator( Node<T> headNode ){
currentNode = headNode;
}
public boolean hasNext(){
return ( currentNode != null );
}
public T next(){
T currentData = currentNode.getData();
currentNode = currentNode.getNextNode();
return currentData;
}
public Node<T> nextNode(){
Node<T> tempNode = currentNode;
currentNode = currentNode.getNextNode();
return tempNode;
}
public void remove(){
}
}
public void printList(){
ListIterator<T> listIterator = this.iterator();
while(listIterator.hasNext()){
System.out.print(listIterator.next()+", ");
}
System.out.println("\n");
}
public void addToTail( T newNodeData ){
Node<T> lastNode = null;
ListIterator<T> listIterator = this.iterator();
}
public T deleteFromTail(){
Node<T> lastNode = null;
Node<T> previousToLastNode = null;
ListIterator<T> listIterator = this.iterator();
T tailNodeData;
return tailNodeData;
}
}
|