anonymous
2010-02-24 18:00:44 UTC
public class List
{
private class Node
{
public int data;
public Node next;
public Node ( int d, Node n )
{
data = d;
next = n;
}
}
private Node head;
public List()
{
head = null;
}
private class TraverseReturn
{
public Node prev;
public Node curr;
public TraverseReturn ( Node _prev, Node _curr )
{
prev = _prev;
curr = _curr;
}
}
public TraverseReturn traverse ( int value )
{
Node prev = null;
Node curr = head;
while ( curr != null && curr.data < value )
{
prev = curr;
curr = curr.next;
}
return new TraverseReturn ( prev, curr );
}
public void insert ( int value )
{
TraverseReturn tr = traverse ( value );
Node addNode = new Node();
if ( tr.prev != null )
tr.prev.next = addNode;
else // this belongs at the beginning or head
head = addNode;
}
public String toString()
{
String rval = "";
Node curr = head;
while ( curr != null )
{
rval = rval + curr.data + "";
curr = curr.next;
}
return rval;
}
public boolean find ( int value )
{
TraverseReturn tr = traverse ( value );
return ( tr.curr != null && tr.curr.data == value );
}
public void remove ( int value )
{
TraverseReturn tr = traverse ( value );
if ( tr.curr != null && tr.curr.data == value )
{
if ( tr.prev != null )
{
tr.prev.next = tr.curr.next;
}
else
head = tr.curr.next;
}
}
public static void main ( String args[] )
{
int[] arr = { 1, 4, 8, 6 };
List l = new List();
for ( int x : arr )
{
System.out.println( "inserting: " + x );
l.insert( x );
}
System.out.printf( "List contains: \n", l );
}
}