Palindrome detection is a common problem in computer science, where a palindrome is a string or sequence of elements that reads the same forwards as it does backwards. This python program addresses the task of checking whether a singly linked list is a palindrome or not.
Problem statement
Given a singly linked list, your goal is to determine whether the list is a palindrome. A singly linked list is considered a palindrome if the sequence of elements remains the same when read from the beginning to the end as well as from the end to the beginning.
Python Program to Check if Singly Linked List is Palindrome
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if not self.head: self.head = new_node else: current = self.head while current.next: current = current.next current.next = new_node def is_palindrome(self): elements = [] current = self.head while current: elements.append(current.data) current = current.next return elements == elements[::-1] # Input: Creating a linked list linked_list = LinkedList() elements = [1, 2, 3, 2, 1] for element in elements: linked_list.append(element) print("Linked List:") current = linked_list.head while current: print(current.data, end=" -> ") current = current.next print("None") if linked_list.is_palindrome(): print("\nThe linked list is a palindrome.") else: print("\nThe linked list is not a palindrome.")