From 5033bd5c451febf137493063a6a68c6925aef090 Mon Sep 17 00:00:00 2001 From: Medha Sunkad Date: Sun, 19 Oct 2025 18:20:20 +0530 Subject: [PATCH 1/2] Added FindMiddleNode, FindMiddleNodeTest, ListNode, and corresponding JUnit test --- .../datastructures/lists/FindMiddleNode.java | 27 +++++++++++++++++ .../datastructures/lists/ListNode.java | 11 +++++++ .../lists/FindMiddleNodeTest.java | 30 +++++++++++++++++++ 3 files changed, 68 insertions(+) create mode 100644 src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java create mode 100644 src/main/java/com/thealgorithms/datastructures/lists/ListNode.java create mode 100644 src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java diff --git a/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java b/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java new file mode 100644 index 000000000000..00e403c23c47 --- /dev/null +++ b/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java @@ -0,0 +1,27 @@ +package com.thealgorithms.datastructures.lists; + +public class FindMiddleNode { + + public static ListNode findMiddle(ListNode head) { + ListNode slow = head; + ListNode fast = head; + while (fast != null && fast.next != null) { + slow = slow.next; + fast = fast.next.next; + } + return slow; + } + + public static void main(String[] args) { + // Example: create a linked list 1->2->3->4->5 + ListNode head = new ListNode(1); + head.next = new ListNode(2); + head.next.next = new ListNode(3); + head.next.next.next = new ListNode(4); + head.next.next.next.next = new ListNode(5); + + ListNode middle = findMiddle(head); + System.out.println("Middle node value: " + middle.value); + } +} +// package com.thealgorithms.datastructures.lists; \ No newline at end of file diff --git a/src/main/java/com/thealgorithms/datastructures/lists/ListNode.java b/src/main/java/com/thealgorithms/datastructures/lists/ListNode.java new file mode 100644 index 000000000000..ec015edf8be4 --- /dev/null +++ b/src/main/java/com/thealgorithms/datastructures/lists/ListNode.java @@ -0,0 +1,11 @@ +package com.thealgorithms.datastructures.lists; + +public class ListNode { + int value; + ListNode next; + + public ListNode(int value) { + this.value = value; + this.next = null; + } +} diff --git a/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java b/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java new file mode 100644 index 000000000000..18f0bb2b2eef --- /dev/null +++ b/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java @@ -0,0 +1,30 @@ +package com.thealgorithms.datastructures.lists; + +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class FindMiddleNodeTest { + + @Test + public void testOddLengthList() { + ListNode head = createList(new int[]{1, 2, 3, 4, 5}); + assertEquals(3, FindMiddleNode.findMiddle(head).value); + } + + @Test + public void testEvenLengthList() { + ListNode head = createList(new int[]{1, 2, 3, 4, 5, 6}); + assertEquals(4, FindMiddleNode.findMiddle(head).value); + } + + private ListNode createList(int[] values) { + ListNode head = new ListNode(values[0]); + ListNode current = head; + for (int i = 1; i < values.length; i++) { + current.next = new ListNode(values[i]); + current = current.next; + } + return head; + } +} + From c58d92536a0e128db41dd73681331c7fa1194cd4 Mon Sep 17 00:00:00 2001 From: Medha Sunkad Date: Sun, 19 Oct 2025 19:56:24 +0530 Subject: [PATCH 2/2] Add FindMiddleNode algorithm with ListNode class and JUnit tests --- .../thealgorithms/datastructures/lists/FindMiddleNode.java | 7 +++++-- .../datastructures/lists/FindMiddleNodeTest.java | 5 ++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java b/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java index 00e403c23c47..570a8d5d62e9 100644 --- a/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java +++ b/src/main/java/com/thealgorithms/datastructures/lists/FindMiddleNode.java @@ -1,6 +1,10 @@ package com.thealgorithms.datastructures.lists; -public class FindMiddleNode { +public final class FindMiddleNode { + + private FindMiddleNode() { + throw new UnsupportedOperationException("Utility class"); + } public static ListNode findMiddle(ListNode head) { ListNode slow = head; @@ -24,4 +28,3 @@ public static void main(String[] args) { System.out.println("Middle node value: " + middle.value); } } -// package com.thealgorithms.datastructures.lists; \ No newline at end of file diff --git a/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java b/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java index 18f0bb2b2eef..e9cc152775d8 100644 --- a/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java +++ b/src/test/java/com/thealgorithms/datastructures/lists/FindMiddleNodeTest.java @@ -7,13 +7,13 @@ public class FindMiddleNodeTest { @Test public void testOddLengthList() { - ListNode head = createList(new int[]{1, 2, 3, 4, 5}); + ListNode head = createList(new int[] { 1, 2, 3, 4, 5 }); assertEquals(3, FindMiddleNode.findMiddle(head).value); } @Test public void testEvenLengthList() { - ListNode head = createList(new int[]{1, 2, 3, 4, 5, 6}); + ListNode head = createList(new int[] { 1, 2, 3, 4, 5, 6 }); assertEquals(4, FindMiddleNode.findMiddle(head).value); } @@ -27,4 +27,3 @@ private ListNode createList(int[] values) { return head; } } -