REF 6G   Linked List by Dane Henry

import javax.swing.JOptionPane;

public class LinkedListTest
    {
        public static int menu()
            {
                int option = 0;
                String main = "1. Add an element \n2. Delete Element \n3. Retrieve an element \n4. Traverse in order \n5. QUIT";
                String answer = JOptionPane.showInputDialog(main);
                try
                    {
                        option = Integer.parseInt(answer);
                    }
                catch(NumberFormatException e)
                    {
                        JOptionPane.showMessageDialog(null, "Please retry entering the number.");
                        System.exit(0);
                    }
                return option;
            }
           
        public static void main(String[] args)
            {
                SingleLinkedList myList = new SingleLinkedList();
                int choice = menu();
           
                while (choice < 5)
                    {
                        switch(choice)
                            {
                                case 1: String one = "Enter String to be added:";
                                        String nodeData = JOptionPane.showInputDialog(one);
                                        myList.insert(nodeData);
                                        JOptionPane.showMessageDialog(null, nodeData + " was added to the list.");
                                        break;

                                case 2: String two = "Enter String to be deleted";
                                        nodeData = JOptionPane.showInputDialog(two);
                                        myList.delete(nodeData);
                                        JOptionPane.showMessageDialog(null, "String " + nodeData + " has been deleted.");
                                        break;

                                case 3: String three = "Enter String to be found:";
                                        nodeData = JOptionPane.showInputDialog(three);
                                        JOptionPane.showMessageDialog(null, "I found " + myList.seek(nodeData));
                                        break;

                                case 4:myList.traverseList();
                            }
                        choice = menu();
                    }
                System.exit(0);
            }
    }
********************************************************************************************

import javax.swing.JOptionPane;
import java.util.*;

public class SingleLinkedList
    {
        // An inner class called node
        // Node differs from the data it holds only in the fact that it
        // has a pointer (reference) to the next element in the list
        private static class Node
            {
                private String data;
                private Node next;

                private Node(String dataItem) 
                    {
                        data=dataItem;
                        next=null;
                    }

                private Node(String dataItem, Node nodeRef) 
                    {
                        data=dataItem;
                        next=nodeRef;
                    }
            }

        //SingleLinkedList Variables
        private Node head;

        public SingleLinkedList() 
            {
                head=null;
            }

        public void addAtHead(String inData) 
            {
                Node newNode = new Node(inData);
                newNode.next=head;
                head=newNode;
            }
    
        public void insert(String inData) 
            {
                if(head==null) 
                    {
                        Node newNode = new Node(inData);
                        newNode.next = head;
                        head = newNode;
                        return;
                    }
                if ((inData.compareTo(head.data) <0))
                    {
                        Node newNode = new Node(inData, head);
                        head=newNode;
                        return;
                    }
                Node iterNode = head, trailingNode=head;
                while(iterNode != null && (inData.compareTo(iterNode.data) > 0))
                    {
                        trailingNode = iterNode;
                        iterNode = iterNode.next;
                    }
                Node newNode = new Node(inData, iterNode);
                trailingNode.next = newNode;
            }
    
        public String seek(String inData)
            {
                try 
                    {
                        Node iterNode = head, trailingNode = head;
                        while (iterNode != null && inData.compareTo(iterNode.data) != 0)
                            {
                                trailingNode = iterNode;
                                iterNode = iterNode.next;
                            }
                        return iterNode.data;
                    }
                catch (NullPointerException ex)
                    {
                        return null;
                    }
            }
    
        public void delete (String outData)
            {
                if (outData.compareTo(head.data) == 0)
                    {
                        head = head.next;
                        return;
                    }
                try 
                    {
                        Node iterNode = head, trailingNode = head;
                        if (iterNode.data == null)
                            {
                                trailingNode = iterNode;
                                iterNode = iterNode.next;
                            }
                        while (outData.compareTo(iterNode.data) != 0)
                            {
                                trailingNode = iterNode;
                                iterNode = iterNode.next;
                            }
                        iterNode = iterNode.next;
                        trailingNode.next = iterNode;
                    }
                catch (NullPointerException ex)
                    {
                        System.out.println ("Number Not In List To Delete");
                    }
            }

        public void traverseList() 
            {
                String out = "";
                Node iterNode=head;
                while(iterNode !=null) 
                    {
                        out += "\n" + iterNode.data;
                        iterNode=iterNode.next;
                    }
                JOptionPane.showMessageDialog(null, out);
            }
    }