Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- class _Node:
- def __init__(self, item):
- self.item = item
- self.next = None
- class Bag:
- def __init__(self):
- self._head = None
- self._size = 0
- def __len__(self):
- return self._size
- def is_empty(self):
- return self._head is None
- def __contains__(self, item):
- current_node = self._head
- while current_node is not None and current_node.item != item:
- current_node = current_node.next
- return current_node is not None
- def add(self, item):
- new_node = _Node(item)
- new_node.next = self._head
- self._head = new_node
- self._size += 1
- def remove(self, item):
- previous_node = None
- current_node = self._head
- while current_node is not None and current_node.item != item:
- previous_node = current_node
- current_node = current_node.next
- if current_node is not None: # the item is found in Bag and Bag is not empty (!)
- if previous_node is None: # the item is in the head node
- self._head = current_node.next
- else:
- previous_node.next = current_node.next # the item is not in the head node
- self._size -= 1
- del current_node
- else: # the item is not found in Bag or Bag is empty (!)
- pass # a null operation; nothing happens when it executes
- def __iter__(self):
- return _BagIterator(self._head)
- class _BagIterator:
- def __init__(self, head):
- self._current_node = head
- def __iter__(self):
- return self
- def __next__(self):
- if self._current_node is not None:
- item = self._current_node.item
- self._current_node = self._current_node.next
- return item
- else:
- raise StopIteration
- def main():
- my_bag = Bag()
- for i in range(20):
- random_int = random.randint(1, 100)
- my_bag.add(random_int)
- # print(random_int, end=' ')
- print()
- for item in my_bag:
- print(item, end=' ')
- print("\n", my_bag.is_empty())
- print()
- print(len(my_bag))
- print()
- # print(my_bag.remove(3))
- if __name__ == '__main__':
- main()
- class Node:
- def __init__(self, item):
- self.item = item
- self.item = None
- class Bag:
- def __init__(self):
- self.head = None
- self.size = 0
- def __len__(self): # size() bag = Bag() len(bag)
- return self._size
- def add(self,item):
- new_node = Node(item)
- new_node.next = self.head
- self.head = new_node
- self.size += 1
- def size(self):
- return self.size()
- def is_empty(self):
- return self.size == 0
- def contains(selfs, item):
- current_node = self.head
- while current_node is not None and current_node.item != item:
- current_node = current_node.next
- return current_node is not None
- def remove(self, item):
- previous_node = None
- current_node = self._head
- while current_node is not None and current_node.item != item:
- previous_node = current_node
- current_node = current_node.next
- if current_node = None: pass
- else:
- self._size -= 1
- if previous_node is None:
- self.
- pass
- else current_node
- def __iter__(self):
- if self._index<(self._head.next)
- else
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement