Advertisement
Guest User

linkedlist

a guest
Feb 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. import random
  2.  
  3.  
  4. class _Node:
  5. def __init__(self, item):
  6. self.item = item
  7. self.next = None
  8.  
  9.  
  10. class Bag:
  11. def __init__(self):
  12. self._head = None
  13. self._size = 0
  14.  
  15. def __len__(self):
  16. return self._size
  17.  
  18. def is_empty(self):
  19. return self._head is None
  20.  
  21. def __contains__(self, item):
  22. current_node = self._head
  23. while current_node is not None and current_node.item != item:
  24. current_node = current_node.next
  25. return current_node is not None
  26.  
  27. def add(self, item):
  28. new_node = _Node(item)
  29. new_node.next = self._head
  30. self._head = new_node
  31. self._size += 1
  32.  
  33. def remove(self, item):
  34. previous_node = None
  35. current_node = self._head
  36. while current_node is not None and current_node.item != item:
  37. previous_node = current_node
  38. current_node = current_node.next
  39. if current_node is not None: # the item is found in Bag and Bag is not empty (!)
  40. if previous_node is None: # the item is in the head node
  41. self._head = current_node.next
  42. else:
  43. previous_node.next = current_node.next # the item is not in the head node
  44. self._size -= 1
  45. del current_node
  46. else: # the item is not found in Bag or Bag is empty (!)
  47. pass # a null operation; nothing happens when it executes
  48.  
  49. def __iter__(self):
  50. return _BagIterator(self._head)
  51.  
  52.  
  53. class _BagIterator:
  54. def __init__(self, head):
  55. self._current_node = head
  56.  
  57. def __iter__(self):
  58. return self
  59.  
  60. def __next__(self):
  61. if self._current_node is not None:
  62. item = self._current_node.item
  63. self._current_node = self._current_node.next
  64. return item
  65. else:
  66. raise StopIteration
  67.  
  68.  
  69. def main():
  70. my_bag = Bag()
  71. for i in range(20):
  72. random_int = random.randint(1, 100)
  73. my_bag.add(random_int)
  74. # print(random_int, end=' ')
  75.  
  76. print()
  77. for item in my_bag:
  78. print(item, end=' ')
  79.  
  80. print("\n", my_bag.is_empty())
  81. print()
  82. print(len(my_bag))
  83.  
  84. print()
  85. # print(my_bag.remove(3))
  86.  
  87.  
  88. if __name__ == '__main__':
  89. main()
  90.  
  91.  
  92. class Node:
  93. def __init__(self, item):
  94. self.item = item
  95. self.item = None
  96.  
  97. class Bag:
  98. def __init__(self):
  99. self.head = None
  100. self.size = 0
  101.  
  102. def __len__(self): # size() bag = Bag() len(bag)
  103. return self._size
  104.  
  105. def add(self,item):
  106. new_node = Node(item)
  107. new_node.next = self.head
  108. self.head = new_node
  109. self.size += 1
  110.  
  111. def size(self):
  112. return self.size()
  113.  
  114. def is_empty(self):
  115. return self.size == 0
  116.  
  117. def contains(selfs, item):
  118. current_node = self.head
  119. while current_node is not None and current_node.item != item:
  120. current_node = current_node.next
  121.  
  122. return current_node is not None
  123.  
  124. def remove(self, item):
  125. previous_node = None
  126. current_node = self._head
  127. while current_node is not None and current_node.item != item:
  128. previous_node = current_node
  129. current_node = current_node.next
  130.  
  131. if current_node = None: pass
  132. else:
  133. self._size -= 1
  134. if previous_node is None:
  135. self.
  136. pass
  137. else current_node
  138.  
  139. def __iter__(self):
  140. if self._index<(self._head.next)
  141. else
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement