From 2f4231a445259c27030697b9b144764394591369 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Fri, 20 Feb 2026 20:20:23 +0530 Subject: [PATCH 01/17] Create ReverseQueueRecursion Add ReverseQueueRecursion.java: - Reverses a Queue using recursion (generic ) - Includes unit tests in ReverseQueueRecursionTest.java - Follows repo style (final class, private constructor, Javadoc) --- .../queues/ReverseQueueRecursion | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion new file mode 100644 index 000000000000..c166b44792c0 --- /dev/null +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion @@ -0,0 +1,26 @@ +package com.thealgorithms.datastructures.queues; + +import java.util.Queue; + +/** + * Reverse a queue using recursion. + */ +public final class ReverseQueueRecursion { + + private ReverseQueueRecursion() { + // private constructor to prevent instantiation + } + + /** + * Reverses the given queue recursively. + * + * @param queue the queue to reverse + * @param type of elements in the queue + */ + public static void reverseQueue(Queue queue) { + if (queue.isEmpty()) return; + T front = queue.poll(); + reverseQueue(queue); + queue.add(front); + } +} From ebdf90b71bab1be39d769c03e6d920f26bc641a2 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:11:19 +0530 Subject: [PATCH 02/17] Create ReverseQueueRecursionTest.java Add ReverseQueueRecursionTest as required by CONTRIBUTING.md --- .../queues/ReverseQueueRecursionTest.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java diff --git a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java new file mode 100644 index 000000000000..2ba121f92730 --- /dev/null +++ b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java @@ -0,0 +1,64 @@ +package com.thealgorithms.datastructures.queues; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.LinkedList; +import java.util.Queue; + +import org.junit.jupiter.api.Test; + +class ReverseQueueRecursionTest { + + @Test + void testReverseMultipleElements() { + Queue queue = new LinkedList<>(); + queue.add(1); + queue.add(2); + queue.add(3); + queue.add(4); + + ReverseQueueRecursion.reverseQueue(queue); + + assertEquals(4, queue.poll()); + assertEquals(3, queue.poll()); + assertEquals(2, queue.poll()); + assertEquals(1, queue.poll()); + assertTrue(queue.isEmpty()); + } + + @Test + void testReverseSingleElement() { + Queue queue = new LinkedList<>(); + queue.add(42); + + ReverseQueueRecursion.reverseQueue(queue); + + assertEquals(42, queue.poll()); + assertTrue(queue.isEmpty()); + } + + @Test + void testReverseEmptyQueue() { + Queue queue = new LinkedList<>(); + + ReverseQueueRecursion.reverseQueue(queue); + + assertTrue(queue.isEmpty()); + } + + @Test + void testReverseStringQueue() { + Queue queue = new LinkedList<>(); + queue.add("A"); + queue.add("B"); + queue.add("C"); + + ReverseQueueRecursion.reverseQueue(queue); + + assertEquals("C", queue.poll()); + assertEquals("B", queue.poll()); + assertEquals("A", queue.poll()); + assertTrue(queue.isEmpty()); + } +} From 73b9cbc39b5ed61634754afe4c7b729a9ffe4fe5 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:15:23 +0530 Subject: [PATCH 03/17] Rename ReverseQueueRecursion to ReverseQueueRecursion.java --- .../queues/{ReverseQueueRecursion => ReverseQueueRecursion.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/java/com/thealgorithms/datastructures/queues/{ReverseQueueRecursion => ReverseQueueRecursion.java} (100%) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java similarity index 100% rename from src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion rename to src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java From 4c8a7826afdb05d6dc6fa0ffa1bb9600adab0c67 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:17:59 +0530 Subject: [PATCH 04/17] Update ReverseQueueRecursion.java --- .../queues/ReverseQueueRecursion.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java index c166b44792c0..193e91549128 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java @@ -8,7 +8,7 @@ public final class ReverseQueueRecursion { private ReverseQueueRecursion() { - // private constructor to prevent instantiation + // Private constructor to prevent instantiation } /** @@ -17,9 +17,16 @@ private ReverseQueueRecursion() { * @param queue the queue to reverse * @param type of elements in the queue */ - public static void reverseQueue(Queue queue) { - if (queue.isEmpty()) return; - T front = queue.poll(); + public static void reverseQueue(final Queue queue) { + if (queue == null) { + return; + } + + if (queue.isEmpty()) { + return; + } + + final T front = queue.poll(); reverseQueue(queue); queue.add(front); } From 30020fd7b886f3d69280ea66630106ee77634f8c Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:19:00 +0530 Subject: [PATCH 05/17] Update ReverseQueueRecursion.java From bd0cfc27d71556252c2c4192cc932eadf03b109d Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:20:15 +0530 Subject: [PATCH 06/17] Update ReverseQueueRecursion.java --- .../datastructures/queues/ReverseQueueRecursion.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java index 193e91549128..35acc82e96eb 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java @@ -8,7 +8,7 @@ public final class ReverseQueueRecursion { private ReverseQueueRecursion() { - // Private constructor to prevent instantiation + // private constructor to prevent instantiation } /** @@ -18,14 +18,9 @@ private ReverseQueueRecursion() { * @param type of elements in the queue */ public static void reverseQueue(final Queue queue) { - if (queue == null) { + if (queue == null || queue.isEmpty()) { return; } - - if (queue.isEmpty()) { - return; - } - final T front = queue.poll(); reverseQueue(queue); queue.add(front); From 616a3f016a868977233c115625bff964581b091d Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:23:55 +0530 Subject: [PATCH 07/17] Update ReverseQueueRecursion.java --- .../datastructures/queues/ReverseQueueRecursion.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java index 35acc82e96eb..8274bd4eb9b3 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java @@ -8,19 +8,20 @@ public final class ReverseQueueRecursion { private ReverseQueueRecursion() { - // private constructor to prevent instantiation + // Private constructor to prevent instantiation } /** * Reverses the given queue recursively. * * @param queue the queue to reverse - * @param type of elements in the queue + * @param the type of elements in the queue */ public static void reverseQueue(final Queue queue) { if (queue == null || queue.isEmpty()) { return; } + final T front = queue.poll(); reverseQueue(queue); queue.add(front); From 5e33e6d9750497794fbdb23db565b9e26a5f223c Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:25:45 +0530 Subject: [PATCH 08/17] Update ReverseQueueRecursionTest.java From adff5b723832a5b95c3faa31d966b0d3af7e4b05 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:27:54 +0530 Subject: [PATCH 09/17] Update ReverseQueueRecursion.java --- .../datastructures/queues/ReverseQueueRecursion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java index 8274bd4eb9b3..9a970df0bb45 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java @@ -8,7 +8,7 @@ public final class ReverseQueueRecursion { private ReverseQueueRecursion() { - // Private constructor to prevent instantiation + // private constructor to prevent instantiation } /** From 5235346340faf9562c098086cbf804197e3f343b Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:29:27 +0530 Subject: [PATCH 10/17] Update ReverseQueueRecursionTest.java From e8e5fc3a7187e4c4ef23c87264e3b9ef294b0321 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:31:09 +0530 Subject: [PATCH 11/17] Update ReverseQueueRecursionTest.java --- .../datastructures/queues/ReverseQueueRecursionTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java index 2ba121f92730..b970c30ac255 100644 --- a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java +++ b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java @@ -2,10 +2,8 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; - import java.util.LinkedList; import java.util.Queue; - import org.junit.jupiter.api.Test; class ReverseQueueRecursionTest { From f34439d190037b5ac527f8282ff8274fc064328d Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:35:29 +0530 Subject: [PATCH 12/17] Update ReverseQueueRecursion.java --- .../queues/ReverseQueueRecursion.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java index 9a970df0bb45..6344ea22c4c5 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java @@ -1,27 +1,12 @@ package com.thealgorithms.datastructures.queues; - import java.util.Queue; - -/** - * Reverse a queue using recursion. - */ public final class ReverseQueueRecursion { - private ReverseQueueRecursion() { - // private constructor to prevent instantiation } - - /** - * Reverses the given queue recursively. - * - * @param queue the queue to reverse - * @param the type of elements in the queue - */ public static void reverseQueue(final Queue queue) { if (queue == null || queue.isEmpty()) { return; } - final T front = queue.poll(); reverseQueue(queue); queue.add(front); From 6df7f1f5bcd633b6a12b0c7f49b3ebcee6e59fb6 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 18:37:09 +0530 Subject: [PATCH 13/17] Update ReverseQueueRecursionTest.java --- .../queues/ReverseQueueRecursionTest.java | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java index b970c30ac255..808e5727a2d0 100644 --- a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java +++ b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java @@ -1,57 +1,41 @@ package com.thealgorithms.datastructures.queues; - import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.LinkedList; import java.util.Queue; import org.junit.jupiter.api.Test; - class ReverseQueueRecursionTest { - - @Test void testReverseMultipleElements() { Queue queue = new LinkedList<>(); queue.add(1); queue.add(2); queue.add(3); queue.add(4); - ReverseQueueRecursion.reverseQueue(queue); - assertEquals(4, queue.poll()); assertEquals(3, queue.poll()); assertEquals(2, queue.poll()); assertEquals(1, queue.poll()); assertTrue(queue.isEmpty()); } - - @Test void testReverseSingleElement() { Queue queue = new LinkedList<>(); queue.add(42); - ReverseQueueRecursion.reverseQueue(queue); assertEquals(42, queue.poll()); assertTrue(queue.isEmpty()); } - - @Test void testReverseEmptyQueue() { Queue queue = new LinkedList<>(); - ReverseQueueRecursion.reverseQueue(queue); - assertTrue(queue.isEmpty()); } - - @Test void testReverseStringQueue() { Queue queue = new LinkedList<>(); queue.add("A"); queue.add("B"); queue.add("C"); - ReverseQueueRecursion.reverseQueue(queue); assertEquals("C", queue.poll()); From 8f87e6aae8c8816b45b7156db20333f32438ba09 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 19:04:33 +0530 Subject: [PATCH 14/17] Update ReverseQueueRecursionTest.java --- .../datastructures/queues/ReverseQueueRecursionTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java index 808e5727a2d0..0ff019170546 100644 --- a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java +++ b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java @@ -1,9 +1,15 @@ package com.thealgorithms.datastructures.queues; + import static org.junit.jupiter.api.Assertions.assertEquals; + import static org.junit.jupiter.api.Assertions.assertTrue; + import java.util.LinkedList; + import java.util.Queue; + import org.junit.jupiter.api.Test; + class ReverseQueueRecursionTest { void testReverseMultipleElements() { Queue queue = new LinkedList<>(); @@ -44,3 +50,4 @@ void testReverseStringQueue() { assertTrue(queue.isEmpty()); } } + From cef104cce50543701a05cc2e0cf8872c33bbe5b3 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 19:07:22 +0530 Subject: [PATCH 15/17] Update ReverseQueueRecursionTest.java --- .../queues/ReverseQueueRecursionTest.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java index 0ff019170546..078b26ff5291 100644 --- a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java +++ b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java @@ -1,16 +1,15 @@ package com.thealgorithms.datastructures.queues; import static org.junit.jupiter.api.Assertions.assertEquals; - import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.LinkedList; - import java.util.Queue; - import org.junit.jupiter.api.Test; class ReverseQueueRecursionTest { + + @Test void testReverseMultipleElements() { Queue queue = new LinkedList<>(); queue.add(1); @@ -24,30 +23,33 @@ void testReverseMultipleElements() { assertEquals(1, queue.poll()); assertTrue(queue.isEmpty()); } + + @Test void testReverseSingleElement() { Queue queue = new LinkedList<>(); queue.add(42); ReverseQueueRecursion.reverseQueue(queue); - assertEquals(42, queue.poll()); assertTrue(queue.isEmpty()); } + + @Test void testReverseEmptyQueue() { Queue queue = new LinkedList<>(); ReverseQueueRecursion.reverseQueue(queue); assertTrue(queue.isEmpty()); } + + @Test void testReverseStringQueue() { Queue queue = new LinkedList<>(); queue.add("A"); queue.add("B"); queue.add("C"); ReverseQueueRecursion.reverseQueue(queue); - assertEquals("C", queue.poll()); assertEquals("B", queue.poll()); assertEquals("A", queue.poll()); assertTrue(queue.isEmpty()); } } - From 51ef0736de483c248db685f34bfb6b9e8f4b0da0 Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 19:08:50 +0530 Subject: [PATCH 16/17] Update ReverseQueueRecursionTest.java --- .../datastructures/queues/ReverseQueueRecursionTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java index 078b26ff5291..e3abe15b6a46 100644 --- a/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java +++ b/src/test/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursionTest.java @@ -8,7 +8,6 @@ import org.junit.jupiter.api.Test; class ReverseQueueRecursionTest { - @Test void testReverseMultipleElements() { Queue queue = new LinkedList<>(); From 9af85672d6b73d1fe89b5cc7948ef49bcfd4d91b Mon Sep 17 00:00:00 2001 From: Vasundhara117 Date: Mon, 23 Feb 2026 19:34:53 +0530 Subject: [PATCH 17/17] Update ReverseQueueRecursion.java --- .../queues/ReverseQueueRecursion.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java index 6344ea22c4c5..79275dcefe20 100644 --- a/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java +++ b/src/main/java/com/thealgorithms/datastructures/queues/ReverseQueueRecursion.java @@ -1,12 +1,26 @@ package com.thealgorithms.datastructures.queues; + import java.util.Queue; + +/** + * Reverse a queue using recursion. + */ public final class ReverseQueueRecursion { private ReverseQueueRecursion() { + // private constructor to prevent instantiation } + + /** + * Reverses the given queue recursively. + * + * @param queue the queue to reverse + * @param the type of elements in the queue + */ public static void reverseQueue(final Queue queue) { if (queue == null || queue.isEmpty()) { return; } + final T front = queue.poll(); reverseQueue(queue); queue.add(front);