#!/local/bin/python class list: def __init__(self,val,next=0): self.val=val self.next=next def __repr__(self,delim=""): self.t="" if self.next != 0: self.t=self.next.__repr__("->") return "%s%d%s" % (delim,self.val,self.t) def add(self,val): t=self while t.next != 0: t=t.next t.next=list(val) def search(self,val): if self.val == val: return "true" if self.next == 0: return "false" return self.next.search(val) def delete(self,val): if self.val == val: self.val=self.next.val self.next=self.next.next return if self.next == 0: return if self.next.val == val: self.next=self.next.next return self.next.delete(val) def min(self,node=0): if node == 0: node=self self.t=node if self.val < self.t.val: self.t = self if self.next != 0: self.t = self.next.min(self.t) return self.t def sort(self): t=self.min() if t != self: tv=self.val self.val=t.val t.val=tv if self.next != 0: self.next.sort() def combine(self,l): if self.next == 0: self.next = l return self.next.combine(l) def copy(self): print "self",self if self.next == 0: return list(self.val) t=list(self.val,self.next.copy()) print "self=",self,"t=",t return t def revcopy(self,next=0): print "self=",self,"next=",next if self.next == 0: return list(self.val,next) return self.next.revcopy(list(self.val,next)) def main(): l=list(5) print l l.add(6) print l l.add(9) l.add(4) l.add(10) l.add(15) print l print "min=",l.min() l.sort() print l print "search(5)=",l.search(5) print "search(3)=",l.search(3) l.delete(5) print "l=",l k=l.copy() print "k=",k # j=list(8) # j.add(3) # j.add(7) # j.add(20) # print "j=",j # l.combine(j) # print "l=",l # print "k=",k r=k.revcopy() print "r=",r if __name__ == '__main__': main()