public class LinListProgram {
public static void main (String [] args) {
if (args.length > 0) {
int i;
LinList head;
head = new LinList (args[0]);
for (i = 1; i < args.length; i++)
head = head.insert (args[i]);
head.print();
}
}
static class LinList {
LinList next;
LinList prev;
String v;
LinList (String v) {
this.next = null;
this.prev = null;
this.v = v;
}
LinList insert (String v) {
LinList new_ptr = new LinList (v);
LinList ptr = null;
LinList prev_ptr = null;
if (this.v.compareTo (new_ptr.v) >= 0) {
this.prev = new_ptr;
new_ptr.next = this;
return new_ptr;
}
else {
ptr = this;
while (ptr != null) {
if (ptr.v.compareTo(new_ptr.v) >= 0)
break;
prev_ptr = ptr;
ptr = ptr.next;
}
if (ptr == null) {
new_ptr.prev = prev_ptr;
prev_ptr.next = new_ptr;
}
else {
new_ptr.next = prev_ptr.next;
new_ptr.prev = prev_ptr;
prev_ptr.next = new_ptr;
ptr.prev = new_ptr;
}
}
return this;
}
void print () {
LinList ptr = this;
while (ptr != null) {
System.out.println (ptr.v);
ptr = ptr.next;
}
}
}
}