class Link {
public int key;
public double data;
public Link next;
public Link(int id, double dd) {
key = id;
data = dd;
}
public void displayLink() {
System.out.print("{" + key + ", " + data + "} ");
}
}
public class AnotherLinkList {
private Link first;
public AnotherLinkList() {
first = null;
}
public void insertFirst(int id, double dd) {
Link newLink = new Link(id, dd);
newLink.next = first;
first = newLink;
}
public Link find(int key)
{
Link current = first;
while (current.key != key)
{
if (current.next == null)
return null; // didn't find it
else
// not end of list,
current = current.next; // go to next link
}
return current; // found it
}
// delete link with given key
public Link delete(int key) {
Link current = first;
Link previous = first;
while (current.key != key) {
if (current.next == null)
return null; // didn't find it
else {
previous = current; // go to next link
current = current.next;
}
} // found it
if (current == first) // if first link,
first = first.next; // change first
else
// otherwise,
previous.next = current.next; // bypass it
return current;
}
public void displayList() {
System.out.print("List (first to last): ");
Link current = first;
while (current != null)
{
current.displayLink();
current = current.next;
}
System.out.println("");
}
public static void main(String[] args) {
AnotherLinkList theList = new AnotherLinkList();
theList.insertFirst(12, 2.59);
theList.insertFirst(24, 4.69);
theList.insertFirst(36, 6.79);
theList.insertFirst(48, 8.89);
theList.displayList();
Link f = theList.find(44);
if (f != null)
System.out.println("Found link with key " + f.key);
else
System.out.println("Can't find link");
Link d = theList.delete(66);
if (d != null)
System.out.println("Deleted link with key " + d.key);
else
System.out.println("Can't delete link");
theList.displayList();
}
}