/media/sda-magnetic/david/Extern-Magnetic-2022-06-29/Extern01/Dokumente-2020-11-16/disk10-ab-2020-01-10/02-debian-pc2-work/informatik/java-new/java-2020-10-26-before/LinListProgram.java


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;
            }
        }
    }
}