Add TortoiseHareAlgo implementation with append, toString, and getMiddle methods (#6722)

* Create TortoiseHareAlgorithm.java

Implement TortoiseHareAlgo with append, getMiddle, and toString methods

- Added generic singly linked list with inner Node class
- Implemented append() to add elements
- Implemented getMiddle() using Tortoise-Hare approach
- Added toString() for readable list representation

* Create TortoiseHareAlgoTest.java

Add JUnit tests for TortoiseHareAlgo

- Verified append() and toString() output
- Tested getMiddle() for odd, even, and empty lists
- Ensured correct behavior and null handling

* Update README.md

Add TortoiseHareAlgo to linked list documentation

- Added TortoiseHareAlgo.java to file descriptions
- Described its purpose: finding middle element using Tortoise-Hare algorithm

* Rename TortoiseHareAlgorithm.java to TortoiseHareAlgo.java

Fixed build error

* Update TortoiseHareAlgoTest.java

Fixed line formatting build error

* Update TortoiseHareAlgoTest.java

Fixed line formatting build error

* Update TortoiseHareAlgo.java

Added {} after if statement instead of directly writing statement

* Update TortoiseHareAlgo.java

Fixed line formatting build error

* Update TortoiseHareAlgo.java

Added {} after if statement instead of directly writing statement

* Update TortoiseHareAlgoTest.java

Replace .* import with specific imports

---------

Co-authored-by: Deniz Altunkapan <deniz.altunkapan@outlook.com>
This commit is contained in:
TejasSingh022
2025-10-14 14:23:02 +05:30
committed by GitHub
parent 87ad52c206
commit a9357102b3
3 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
package com.thealgorithms.datastructures.lists;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
import org.junit.jupiter.api.Test;
class TortoiseHareAlgoTest {
@Test
void testAppendAndToString() {
TortoiseHareAlgo<Integer> list = new TortoiseHareAlgo<>();
list.append(10);
list.append(20);
list.append(30);
assertEquals("[10, 20, 30]", list.toString());
}
@Test
void testGetMiddleOdd() {
TortoiseHareAlgo<Integer> list = new TortoiseHareAlgo<>();
list.append(1);
list.append(2);
list.append(3);
list.append(4);
list.append(5);
assertEquals(3, list.getMiddle());
}
@Test
void testGetMiddleEven() {
TortoiseHareAlgo<Integer> list = new TortoiseHareAlgo<>();
list.append(1);
list.append(2);
list.append(3);
list.append(4);
assertEquals(3, list.getMiddle()); // returns second middle
}
@Test
void testEmptyList() {
TortoiseHareAlgo<Integer> list = new TortoiseHareAlgo<>();
assertNull(list.getMiddle());
assertEquals("[]", list.toString());
}
}