// 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;
}
}
}