class List: def __init__(self): self.item = None self.rest = None def append(self, item): if self.rest is None: self.rest = Link(item) else: self.rest.append(item) def __len__(self): if self.rest is None: return 0 else: return 1 + len(self.rest) def __repr__(self): if self.rest is None: return "[]" else: return "[" + repr(self.rest) + "]" class Link: def __init__(self, item): self.item = item self.links = None def append(self, item): if self.links is None: self.links = Link(item) else: self.links.append(item) def __len__(self): if self.links is None: return 0 else: return 1 + len(self.links) def __repr__(self): if self.links is None: return str(self.item) else: return str(self.item) + '; ' + repr(self.links)