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