public class Ringpuffer {
public static void main (String [] args) {
int i;
//try {
/* if (args.length < 1) {
throw new Exception();
}*/
Buffer buf = new Buffer (args[0]);
for (i = 1; i < args.length; i++)
buf = buf.insert (args[i]);
buf.print();
//}
/*catch (Exception e) {
System.out.println ("You have not given the neccessary number of arguments");
}*/
}
public static class Buffer {
Buffer next;
Buffer prev;
String info;
Buffer (String info) {
this.next = null;
this.prev = null;
this.info = info;
}
public Buffer insert (String info) {
Buffer ptr = this;
Buffer prev_ptr = this;
Buffer new_ptr = new Buffer (info);
if (info.compareTo(ptr.info) < 0) {
new_ptr.next = ptr;
ptr.prev = new_ptr;
}
else {
while (ptr != null) {
if (info.compareTo(ptr.info) > 0)
break;
prev_ptr = ptr;
ptr = ptr.next;
}
if (ptr == null) {
new_ptr.prev = prev_ptr;
prev_ptr.next = new_ptr;
}
else {
if (ptr.next != null) {
new_ptr.next = prev_ptr.next;
new_ptr.prev = prev_ptr;
new_ptr.next.prev = new_ptr;
new_ptr.prev.next = new_ptr;
}
else {
new_ptr.next = null;
new_ptr.prev = null;
prev_ptr.next = new_ptr;
}
}
return this;
}
return new_ptr;
}
public void print () {
Buffer ptr = this;
while (ptr != null) {
System.out.println (ptr.info);
ptr = ptr.next;
}
}
}
}