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 firstname.lastname@example.org. 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.
- Function to check if a singly linked list is palindrome
- Check if a doubly linked list of characters is palindrome or not
- Check if a linked list of strings forms a palindrome
- Length of longest palindrome list in a linked list using O(1) extra space
- Detect loop in a linked list
- Make a loop at k-th position in a linked list
- Detect and Remove Loop in a Linked List
- Find first node of loop in a linked list
- Find length of loop in 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 a pair with given product exists in Linked list
- Check if linked list is sorted (Iterative and Recursive)
- Check if elements of Linked List are present in pair