Skip to content

Commit 676fddf

Browse files
author
Ram swaroop
committed
delete lesser nodes: done (recursive version)
1 parent 3612bbc commit 676fddf

File tree

4 files changed

+49
-7
lines changed

4 files changed

+49
-7
lines changed

src/me/ramswaroop/common/CircularSingleLinkedList.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,11 @@ public int size() {
181181

182182
@Override
183183
public void printList() {
184-
SingleLinkedNode<E> curr = head;
184+
printList(head);
185+
}
186+
187+
public void printList(SingleLinkedNode<E> node) {
188+
SingleLinkedNode<E> curr = node;
185189
out.print("[");
186190
if (curr == null) {
187191
out.println("]");

src/me/ramswaroop/common/DoubleLinkedList.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ public int size() {
175175

176176
@Override
177177
public void printList() {
178-
DoubleLinkedNode<E> curr = head;
178+
printList(head);
179+
}
180+
181+
public void printList(DoubleLinkedNode<E> node) {
182+
DoubleLinkedNode<E> curr = node;
179183
out.print("[");
180184
if (curr == null) {
181185
out.println("]");

src/me/ramswaroop/common/SingleLinkedList.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,11 @@ public int size() {
161161

162162
@Override
163163
public void printList() {
164-
SingleLinkedNode<E> curr = head;
164+
printList(head);
165+
}
166+
167+
public void printList(SingleLinkedNode<E> node) {
168+
SingleLinkedNode<E> curr = node;
165169
out.print("[");
166170
if (curr == null) {
167171
out.println("]");

src/me/ramswaroop/linkedlists/DeleteLesserNodes.java

+34-4
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ public class DeleteLesserNodes {
1515
/**
1616
* Delete a node from {@param list} if there are any nodes
1717
* with values greater than node on the right hand side of the list.
18-
*
18+
* <p/>
1919
* Example:
20-
*
20+
* <p/>
2121
* Input: 12->15->10->11->5->6->2->3->NULL
2222
* Output: 15->11->6->3->NULL
23-
*
23+
* <p/>
2424
* Input: 10->20->30->40->50->60->NULL
2525
* Output: 60->NULL
26-
*
26+
* <p/>
2727
* Input: 60->50->40->30->20->10->NULL
2828
* Output: 60->50->40->30->20->10->NULL
2929
*
@@ -55,6 +55,27 @@ public static <E extends Comparable<E>> void deleteLesserNodes(SingleLinkedList<
5555
ReverseSingleLinkedList.reverseList(list);
5656
}
5757

58+
59+
/**
60+
* Recursive version of {@link #deleteLesserNodes(me.ramswaroop.common.SingleLinkedList)}.
61+
*
62+
* @param node
63+
* @param <E>
64+
* @return
65+
*/
66+
public static <E extends Comparable<E>> SingleLinkedNode<E> deleteLesserNodes(SingleLinkedNode<E> node) {
67+
if (node == null) return null;
68+
69+
SingleLinkedNode<E> next = deleteLesserNodes(node.next);
70+
node.next = next;
71+
72+
if (next != null && node.item.compareTo(next.item) < 0) {
73+
return next;
74+
} else {
75+
return node;
76+
}
77+
}
78+
5879
public static void main(String a[]) {
5980
SingleLinkedList<Integer> linkedList = new SingleLinkedList<>();
6081
linkedList.add(00);
@@ -67,5 +88,14 @@ public static void main(String a[]) {
6788
linkedList.printList();
6889
deleteLesserNodes(linkedList);
6990
linkedList.printList();
91+
// for recursive version
92+
linkedList.add(00);
93+
linkedList.add(11);
94+
linkedList.add(22);
95+
linkedList.add(33);
96+
linkedList.add(44);
97+
linkedList.add(55);
98+
linkedList.printList();
99+
linkedList.printList(deleteLesserNodes(linkedList.head));
70100
}
71101
}

0 commit comments

Comments
 (0)