package me.ramswaroop.linkedlists;
import me.ramswaroop.common.CircularSingleLinkedList;
import me.ramswaroop.common.SingleLinkedNode;
/**
* Created by IntelliJ IDEA.
*
* @author: ramswaroop
* @date: 6/29/15
* @time: 6:16 PM
*/
public class InsertInSortedCircularLinkedList<E extends Comparable<E>> extends CircularSingleLinkedList<E> {
/**
* Inserts an element in the sorted circular
* linked list maintaining the sorted property.
*
* @param item
*/
public void insert(E item) {
SingleLinkedNode<E> node = head, curr = node;
do {
if (node.item.compareTo(item) > 0) { // new node is to be inserted before head
// last node should now point to the new head
while (curr.next != head) {
curr = curr.next;
}
head = new SingleLinkedNode<>(item, node);
curr.next = head;
return;
} else if (node.next.item.compareTo(item) > 0) {
node.next = new SingleLinkedNode<>(item, node.next);
return;
} else if (node.next == head) {
node.next = new SingleLinkedNode<>(item, head);
return;
}
node = node.next;
} while (node != head);
}
public static void main(String a[]) {
InsertInSortedCircularLinkedList<Integer> linkedList = new InsertInSortedCircularLinkedList<>();
linkedList.add(00);
linkedList.add(11);
linkedList.add(22);
linkedList.add(33);
linkedList.printList();
linkedList.insert(-2);
linkedList.insert(9);
linkedList.insert(44);
linkedList.printList();
}
}