Given a linked list with a loop, the task is to find whether it is palindrome or not. You are not allowed to remove the loop.
Input : 1 -> 2 -> 3 -> 2 /|\ \|/ ------- 1 Output: Palindrome Linked list is 1 2 3 2 1 which is a palindrome. Input : 1 -> 2 -> 3 -> 4 /|\ \|/ ------- 1 Output: Palindrome Linked list is 1 2 3 4 1 which is a not palindrome.
- Detect the loop using Floyd Cycle Detection Algorithm.
- Then find the starting node of loop as discussed in this
- Check linked list is palindrome or not as discussed in this
Below is the implementation.
This article is contributed by Sahil Chhabra (akku). If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- Function to check if a singly linked list is palindrome
- Check if a linked list of strings forms a palindrome
- Check if a doubly linked list of characters is palindrome or not
- Length of longest palindrome list in a linked list using O(1) extra space
- Detect loop in a linked list
- Find length of loop in a Linked List using Map
- Make a loop at k-th position in a linked list
- Find length of loop in linked list
- Find first node of loop in a linked list
- Detect and Remove Loop in a Linked List
- Sum of all Palindrome Numbers present in a Linked list
- Check if a linked list is Circular Linked List
- Check whether the length of given linked list is Even or Odd
- Check if a Linked List is Pairwise Sorted
- Check if linked list is sorted (Iterative and Recursive)