Skip to content

Commit 516d2ed

Browse files
committed
insert into a cyclic sorted list
1 parent aaccdc6 commit 516d2ed

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/**
2+
* Given a node from a cyclic linked list which has been sorted,
3+
* write a function to insert a value into the list
4+
* such that it remains a cyclic sorted list.
5+
* The given node can be any single node in the list.
6+
*/
7+
public class InsertCyclicList {
8+
private static class LinkedNode {
9+
public int value;
10+
public LinkedNode next;
11+
12+
public LinkedNode() {
13+
}
14+
15+
public LinkedNode(int v) {
16+
value = v;
17+
next = null;
18+
}
19+
20+
public String toString() {
21+
return String.valueOf(value);
22+
}
23+
24+
public LinkedNode clone() {
25+
LinkedNode n = new LinkedNode(value);
26+
n.next = next;
27+
return n;
28+
}
29+
} // end of linkednode class
30+
31+
public static void main(String[] args) {
32+
LinkedNode n1 = new LinkedNode(1);
33+
LinkedNode n2 = new LinkedNode(2);
34+
LinkedNode n4 = new LinkedNode(4);
35+
LinkedNode n6 = new LinkedNode(6);
36+
n1.next = n2;
37+
n2.next = n4;
38+
n4.next = n6;
39+
n6.next = n1;
40+
41+
int x = 5;
42+
// list must be sorted.
43+
insertCyclicList(n1, x);
44+
LinkedNode p = n1;
45+
do {
46+
System.out.print(p.toString());
47+
p = p.next;
48+
} while (!p.equals(n1));
49+
50+
}
51+
52+
public static void insertCyclicList(LinkedNode head, int x) {
53+
if (head == null) {
54+
LinkedNode n = new LinkedNode(x);
55+
n.next = n;
56+
head = n;
57+
}
58+
59+
LinkedNode p = head.clone();
60+
LinkedNode prev;
61+
do {
62+
prev = p;
63+
p = p.next;
64+
if (x <= p.value && x >= prev.value) break;
65+
// x is min or max of the list
66+
if ((prev.value > p.value) && (x < p.value || x > prev.value)) break;
67+
} while (!p.equals(head));
68+
69+
LinkedNode n = new LinkedNode(x);
70+
prev.next = n;
71+
n.next = p;
72+
}
73+
}

0 commit comments

Comments
 (0)