public class LinkedListProg {
public static void main (String [] args) {
Person p1 = new Person ("Anton", "Berta");
Person p2 = new Person ("Caesar", "Dora");
Person p3 = new Person ("Emil", "Friedrich");
LinkedLst lst = new LinkedLst (p1);
System.out.println (lst.getFirst().getName());
lst.setFirst (p2);
System.out.println (lst.getFirst().getName());
lst.setFirst (p3);
System.out.println (lst.getFirst().getName());
lst.rmFirst ();
System.out.println (lst.getFirst().getName());
lst.rmFirst ();
System.out.println (lst.getFirst().getName());
lst.rmFirst ();
System.out.println (lst.getFirst().getName());
lst.rmFirst ();
System.out.println (lst.getFirst().getName());
}
static public class Person {
public String firstname;
public String lastname;
Person (String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
String getName () {
return this.firstname + this.lastname;
}
String getLastName () {
return this.lastname;
}
String getFirstName () {
return this.firstname;
}
}
static public class LinkedLst {
public Entry head;
LinkedLst (Person p) {
head = new Entry (p, null, null);
this.head.prev = head;
this.head.next = head;
}
Person getFirst () {
return this.head.val;
}
void setFirst (Person p) {
Entry ptr = new Entry (p, head, null);
ptr.prev = ptr;
head.prev = ptr;
head = ptr;
}
void rmFirst () {
if ((head != null) && (head.next != null) && (head.next != head)) {
Person val = head.val;
head.next.prev = head.next;
head = head.next;
}
}
static public class Entry {
Person val;
Entry next;
Entry prev;
Entry (Person val, Entry next, Entry prev) {
this.val = val;
this.next = next;
this.prev = prev;
}
}
}
}