In [59]:
#2-6 Palindrome: Implement a function to check if a linked list is a palindrome.
from node_class import node
from linked_list import LinkedList
def checkpali(ll):
    node = ll.head
    if reverse(ll) is None or node is None:
        return False
    else:
        node2 = reverse(ll).head
        while node is not None:
            if node.data!=node2.data:
                return False
            else:
                node = node.next
                node2 = node2.next
    return True

def reverse(ll):
    ll2 = LinkedList()
    node1  = ll.head
    if node1 is None:
        return None
    while node1 is not None:
        ll2.insert(node1.data)
        node1 = node1.next
    return ll2

In [60]:
ll = LinkedList()
ll.insert(3)
ll.insert(4)
ll.insert(2)
ll.insert(5)
ll.insert(2)
ll.insert(4)
ll.insert(3)
print ll


->3->4->2->5->2->4->3

In [61]:
reverse(ll)
print reverse(ll)


->3->4->2->5->2->4->3

In [62]:
checkpali(ll)


Out[62]:
True

In [63]:
l1 = LinkedList()
checkpali(l1)


Out[63]:
False

In [ ]: