
/*
	Tom DeDonno page 683 enhanced version

	Basic encapsulated class for setting up a link list,
        has link (to next item) and data (string vs Object?);
        with methods setData, getData, setLink, getLink
        and constructors for add new data, link
        
        Added main method for testing ListNode
 */

public class ListNode {

	private String data;   //Node Data
	private ListNode link; //Pointer to next Node

	public ListNode( ) {

		link = null; 
		data = null;
		}

	public ListNode( String newData, ListNode linkvalue ) {

		data = newData;
		link = linkvalue;
		}

	public void setData( String newData ) { data = newData; }

	public String getData( ) { return data; }

	public void setLink( ListNode newLink ) { link = newLink; }

	public ListNode getLink() { return link; }
        
        public static void main( String[] args ) {
          
          ListNode head = (ListNode)null;
          String[] str = { "Hello", "Everyone", "From", "Tom" };
          //Set up Link List, Why Backwards
          for( int i = str.length-1; i >= 0 ; --i )
            head = new ListNode( str[i], head );
          
          //Iterate link list 
          for( ListNode temp = head; temp != (ListNode)null ;
               temp = temp.getLink() )
                System.out.println( "Data is->" + temp.getData() + "<-" );
          } //end main

} //End class ListNode
		
