Advertisement
uopspop

Untitled

Feb 7th, 2022
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. class Node:
  2. def __init__(self, val):
  3. self.val = val
  4. self.next = None
  5.  
  6. class SingleLinkedList:
  7. def __init__(self):
  8. self.start = None
  9. self.end = None
  10.  
  11. def add(self, val):
  12. if self.start == None:
  13. self.start = Node(val)
  14. self.end = self.start
  15.  
  16. else:
  17. self.end.next = Node(val)
  18. self.end = self.end.next
  19.  
  20. def search(self, val):
  21. if self.start == None:
  22. return None
  23.  
  24. node = self.start
  25. while(True):
  26. if node == None:
  27. break
  28.  
  29. if node.val == val:
  30. return node.val
  31.  
  32. node = node.next
  33.  
  34. return None
  35.  
  36. def remove(self, val):
  37. # step01 : search
  38. node = self.start
  39. node_target = None
  40. node_prev = None
  41.  
  42. while(True):
  43. if node == None:
  44. break
  45.  
  46. if node.val == val:
  47. node_target = node
  48. break
  49.  
  50. node_prev = node
  51. node = node.next
  52.  
  53. # step02 : delete
  54. if node_target == None:
  55. return
  56. if node_target == self.start:
  57. self.start = self.start.next
  58. else :
  59. # prev -> X -> latter
  60. node_prev.next = node_target.next
  61.  
  62. if __name__ == "__main__":
  63. # initialize
  64. mylist = SingleLinkedList()
  65.  
  66. # add O(1) - start
  67. mylist.add(9)
  68.  
  69. # add O(1)
  70. mylist.add(11)
  71. mylist.add(2)
  72. mylist.add(98)
  73. mylist.add(35)
  74.  
  75. # search O(n)
  76. val = mylist.search(98)
  77.  
  78. # remove O(n)
  79. mylist.remove(2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement