Advertisement
Guest User

orderedlist

a guest
Oct 21st, 2017
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.92 KB | None | 0 0
  1. from Node import Node
  2. from LinkedListIterator import LinkedListIterator
  3.  
  4. class OrderedList:
  5.  
  6.     def __init__(self):
  7.         self.__head = None
  8.         self.__count = 0
  9.    
  10.     def is_empty(self):
  11.         return self.__count == 0
  12.  
  13.     def size(self):
  14.         return self.__count
  15.  
  16.     def add(self,item):
  17.         new_node = Node(item)
  18.         curr = self.__head
  19.         prev = None
  20.         self.add_recursive(new_node,curr,prev)
  21.  
  22.     def add_recursive(self,new_node,curr,prev):
  23.         while curr != None:
  24.             if new_node.get_data() >= curr.get_data():
  25.                 new_node.set_next(curr)
  26.                 prev.set_next(new_node)
  27.             elif curr is prev:
  28.                 new_node.set_next(curr)
  29.             else:
  30.                 new_node.set_next(curr)
  31.                 add_recursive(new_node,curr,prev)
  32.            
  33.     def search(self,item):
  34.         curr = self.__head
  35.         return self.search_recursive(item, curr)
  36.  
  37.     def search_recursive(self,item, curr):
  38.         while curr != None:
  39.             if curr.get_data() == item:
  40.                 return True
  41.             elif curr.get_data() > item:
  42.                 return False
  43.             else:
  44.                 curr.get_next()
  45.                 search_recursive(item, curr)
  46.         return False
  47.            
  48.     def remove(self,item):
  49.         curr = self.__head
  50.         prev = None
  51.         self.remove_recursive(item,curr,prev)
  52.        
  53.     def remove_recursive(self,item,curr,prev):
  54.         while curr != None:
  55.             if curr.get_data() != item:
  56.                 prev = curr
  57.                 curr = curr.get_next()
  58.             elif prev == None:
  59.                 self.__head = curr.get_next()
  60.             else:
  61.                 prev.set_next(curr.get_next())
  62.                 remove_recursive(item, curr, prev)
  63.             self.__count = self.__count - 1    
  64.     def __iter__(self):
  65.         return LinkedListIterator(self.__head)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement