CSE114List

// Manager class for a linked list of String

public class CSE114List

{

    private ListNode head;

    

    public CSE114List ()

    {

        head = null; // List starts life empty

    }

    

    public void print()

    {

        ListNode traveler = head;

        

        while (traveler != null)

        {

            System.out.print(traveler.getData() + " -> ");

            traveler = traveler.getNext();

        }

        

        System.out.println("\\\n");

    }

    

    public void insertAtFront(String val)

    {

        // Add new node containing val as 1st node

        ListNode newNode = new ListNode(val);

        

        // Hook it up!

        // 1. always set new node to point to old list

        // 2. set list to point to new node

        newNode.setNext(head);

        head = newNode;

    }

    public String removeFromFront()

    {

        String temp = "";

        

        if (head != null) // only remove from occupied list

        {

            temp = head.getData();

            head = head.getNext();

        }

        

        return temp;

    }

    

    public int size()

    {

        int numNodes = 0;

        

        ListNode traveler = head; // traveler is a temporary pointer

        

        while (traveler != null)

        {

            numNodes++;

            System.out.println("Current node contents: \"" + traveler.getData() + "\"");

            traveler = traveler.getNext();

        }

        

        System.out.println();

        return numNodes;

    }

    

    public void insertAtEnd (String val)

    {

        ListNode newNode = new ListNode(val);

        

        if (head == null) // List is empty

        {

            head = newNode;

        }

        else

        {

            ListNode traveler = head;

            

            while (traveler.getNext() != null)

            {

                traveler = traveler.getNext();

            }

            

            newNode.setNext(null);

            traveler.setNext(newNode);

        }

    }

    

    public String removeFromEnd()

    {

        String temp = "";

        

        if (head == null)

        {

            // Do nothing

            return temp;

        }

        else if (head.getNext() == null) // 1-element list

        {

            // Nuke whole list

            temp = head.getData();

            head = null;

            return temp;

        }

        else // At least 2 nodes in list

        {

            ListNode trav = head;

            

            while (trav.getNext().getNext() != null)

            {

                trav = trav.getNext();

            }

            

            temp = trav.getNext().getData();

            trav.setNext(null);

            return temp;

        }

    }

}

This page was last modified on 8/25/09