Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from Node import Node
- from LinkedListIterator import LinkedListIterator
- class OrderedList:
- def __init__(self):
- self.__head = None
- self.__count = 0
- def is_empty(self):
- return self.__count == 0
- def size(self):
- return self.__count
- def add(self,item):
- new_node = Node(item)
- curr = self.__head
- prev = None
- self.add_recursive(new_node,curr,prev)
- def add_recursive(self,new_node,curr,prev):
- while curr != None:
- if new_node.get_data() >= curr.get_data():
- new_node.set_next(curr)
- prev.set_next(new_node)
- elif curr is prev:
- new_node.set_next(curr)
- else:
- new_node.set_next(curr)
- add_recursive(new_node,curr,prev)
- def search(self,item):
- curr = self.__head
- return self.search_recursive(item, curr)
- def search_recursive(self,item, curr):
- while curr != None:
- if curr.get_data() == item:
- return True
- elif curr.get_data() > item:
- return False
- else:
- curr.get_next()
- search_recursive(item, curr)
- return False
- def remove(self,item):
- curr = self.__head
- prev = None
- self.remove_recursive(item,curr,prev)
- def remove_recursive(self,item,curr,prev):
- while curr != None:
- if curr.get_data() != item:
- prev = curr
- curr = curr.get_next()
- elif prev == None:
- self.__head = curr.get_next()
- else:
- prev.set_next(curr.get_next())
- remove_recursive(item, curr, prev)
- self.__count = self.__count - 1
- def __iter__(self):
- return LinkedListIterator(self.__head)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement