Linked List Sample

class Element:
    def __init__(self,x):
        self.data = x
       
        self.next = None
   
class List:
    def __init__(self,elem):
        self.root=elem
    def append(self,elem):
        # find last node
        if self.root == None:
            self.root=elem
            return   
        e = self.root
        while e.next != None:
            e=e.next
        e.next=elem
    def __str__(self):
        s = ""
        e = self.root
        while e != None:
            s=s+str(e.data)+"-->"
            e = e.next
        return s
    def find(self,x):
        e = self.root
        while e != None:
            if (e.data==x):
                return e
            e = e.next
        return None

    def insert(self,index,x):
        # create a new element with x in it
        if index==0:
            x.next=self.root
            self.root=x
            return       
        walker = self.root
        i=0
        while walker.next and i<(index-1):
            walker=walker.next
            i=i+1
        x.next=walker.next
        walker.next=x

# main test
elem = Element(5)
list = List(elem)
list.append(Element(8))
list.append(Element(4))
list.insert(1,Element(3))
list.insert(0,Element(2))
print list
#print list.find(8).data
#print list.find(6)