File tree Expand file tree Collapse file tree 3 files changed +75
-6
lines changed
src/me/ramswaroop/linkedlists Expand file tree Collapse file tree 3 files changed +75
-6
lines changed Original file line number Diff line number Diff line change
1
+ package me .ramswaroop .linkedlists ;
2
+
3
+ import me .ramswaroop .common .SingleLinkedList ;
4
+ import me .ramswaroop .common .SingleLinkedNode ;
5
+
6
+ /**
7
+ * Created by IntelliJ IDEA.
8
+ *
9
+ * @author: ramswaroop
10
+ * @date: 6/30/15
11
+ * @time: 5:13 PM
12
+ */
13
+ public class DeleteLesserNodes {
14
+
15
+ /**
16
+ * Delete a node from {@param list} if there are any nodes
17
+ * with values greater than node on the right hand side of the list.
18
+ *
19
+ * Example:
20
+ *
21
+ * Input: 12->15->10->11->5->6->2->3->NULL
22
+ * Output: 15->11->6->3->NULL
23
+ *
24
+ * Input: 10->20->30->40->50->60->NULL
25
+ * Output: 60->NULL
26
+ *
27
+ * Input: 60->50->40->30->20->10->NULL
28
+ * Output: 60->50->40->30->20->10->NULL
29
+ *
30
+ * @param list
31
+ * @param <E>
32
+ */
33
+ public static <E extends Comparable <E >> void deleteLesserNodes (SingleLinkedList <E > list ) {
34
+
35
+ // reverse the list
36
+ ReverseSingleLinkedList .reverseList (list );
37
+
38
+ E max ;
39
+ SingleLinkedNode <E > curr = list .getNode (0 ), prev = curr ;
40
+
41
+ max = curr .item ;
42
+
43
+ while (curr != null ) {
44
+ if (curr .item .compareTo (max ) >= 0 ) {
45
+ max = curr .item ;
46
+ prev = curr ;
47
+ } else {
48
+ prev .next = curr .next ;
49
+ }
50
+
51
+ curr = curr .next ;
52
+ }
53
+
54
+ // reverse the list
55
+ ReverseSingleLinkedList .reverseList (list );
56
+ }
57
+
58
+ public static void main (String a []) {
59
+ SingleLinkedList <Integer > linkedList = new SingleLinkedList <>();
60
+ linkedList .add (00 );
61
+ linkedList .add (11 );
62
+ linkedList .add (22 );
63
+ linkedList .add (33 );
64
+ linkedList .add (44 );
65
+ linkedList .add (55 );
66
+ linkedList .add (66 );
67
+ linkedList .printList ();
68
+ deleteLesserNodes (linkedList );
69
+ linkedList .printList ();
70
+ }
71
+ }
Original file line number Diff line number Diff line change @@ -20,7 +20,7 @@ public class ReverseLinkedListInAlternateGroups<E extends Comparable<E>> extends
20
20
* <p/>
21
21
* Example:
22
22
* Inputs: 1->2->3->4->5->6->7->8->9 and k = 3
23
- * Output: 3->2->1->4->5->6->9->8->7.
23
+ * Output: 3->2->1->4->5->6->9->8->7
24
24
*
25
25
* @param node
26
26
* @param k
@@ -53,7 +53,7 @@ public SingleLinkedNode<E> reverseLinkedListInAltGroups(SingleLinkedNode<E> node
53
53
i ++;
54
54
}
55
55
56
- // recursively call on the next 2k set of nodes
56
+ // recursively call on the next set of nodes
57
57
if (curr != null ) {
58
58
curr .next = reverseLinkedListInAltGroups (curr .next , k );
59
59
}
Original file line number Diff line number Diff line change @@ -18,11 +18,9 @@ public class ReverseSingleLinkedList<E extends Comparable<E>> extends SingleLink
18
18
* @param list
19
19
*/
20
20
public static <E extends Comparable <E >> void reverseList (SingleLinkedList <E > list ) {
21
- SingleLinkedNode <E > prev = list .getNode (0 );
22
- SingleLinkedNode <E > curr = prev .next ;
23
- prev .next = null ; // this will be the last node after reversal, so make next of node = null
21
+ SingleLinkedNode <E > curr = list .getNode (0 ), prev = null , next ;
24
22
while (curr != null ) {
25
- SingleLinkedNode < E > next = curr .next ;
23
+ next = curr .next ;
26
24
curr .next = prev ;
27
25
prev = curr ;
28
26
curr = next ;
You can’t perform that action at this time.
0 commit comments