Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 3612bbc

Browse files
author
Ram swaroop
committed
delete lesser nodes: done
1 parent ad59490 commit 3612bbc

File tree

3 files changed

+75
-6
lines changed

3 files changed

+75
-6
lines changed
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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+
}

src/me/ramswaroop/linkedlists/ReverseLinkedListInAlternateGroups.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class ReverseLinkedListInAlternateGroups<E extends Comparable<E>> extends
2020
* <p/>
2121
* Example:
2222
* 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
2424
*
2525
* @param node
2626
* @param k
@@ -53,7 +53,7 @@ public SingleLinkedNode<E> reverseLinkedListInAltGroups(SingleLinkedNode<E> node
5353
i++;
5454
}
5555

56-
// recursively call on the next 2k set of nodes
56+
// recursively call on the next set of nodes
5757
if (curr != null) {
5858
curr.next = reverseLinkedListInAltGroups(curr.next, k);
5959
}

src/me/ramswaroop/linkedlists/ReverseSingleLinkedList.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ public class ReverseSingleLinkedList<E extends Comparable<E>> extends SingleLink
1818
* @param list
1919
*/
2020
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;
2422
while (curr != null) {
25-
SingleLinkedNode<E> next = curr.next;
23+
next = curr.next;
2624
curr.next = prev;
2725
prev = curr;
2826
curr = next;

0 commit comments

Comments
 (0)