Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class LinkedList:
- def __init__(self):
- self.elements = {}
- self.head = None
- def add(self, e):
- if not self.elements:
- self.head = e
- else:
- current = self.head
- while self.elements[current] is not None:
- current = self.elements[current]
- self.elements[current] = e
- self.elements[e] = None
- def __iter__(self):
- self._current = self.head
- return self
- def __next__(self):
- if self._current is None:
- raise StopIteration
- current = self._current
- self._current = self.elements[self._current]
- return current
- # Oops this is stupid and not needed
- # class LLIter:
- # def __init__(self, list):
- # self.list = list
- # self.current = list.head
- #
- # def __iter__(self):
- # return self
- #
- # def __next__(self):
- # if self.current is None:
- # raise StopIteration
- # current = self.current
- # self.current = self.list.elements[self.current]
- # return current
- ll = LinkedList()
- ll.add("butt")
- ll.add("head")
- ll.add("oof")
- print(ll.head)
- print(ll.elements[ll.head])
- print(ll.elements[ll.elements[ll.head]])
- for item in ll:
- print(item)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement