mirror of
https://github.com/jlengrand/Coding4Interviews.git
synced 2026-03-10 08:11:24 +00:00
Finished implementing a first version of delete_item
This commit is contained in:
@@ -56,10 +56,23 @@ class SingleLinkedList():
|
|||||||
item = self._root.nexti
|
item = self._root.nexti
|
||||||
self._root = item
|
self._root = item
|
||||||
self._size -= 1
|
self._size -= 1
|
||||||
elif node >= self.size():
|
elif node >= self._size:
|
||||||
raise Exception("Requested value out of list bounds")
|
raise Exception("Requested value out of list bounds")
|
||||||
|
else:
|
||||||
|
# Find the element before
|
||||||
|
# Find the element after
|
||||||
|
# Link the element after to the element before
|
||||||
|
# Reduce the size
|
||||||
|
# I want to traverse the list only once
|
||||||
|
item = self._root
|
||||||
|
for i in range(node - 1):
|
||||||
|
item = item.nexti
|
||||||
|
|
||||||
|
item_bef = item
|
||||||
|
item_af = item.nexti.nexti
|
||||||
|
item_bef.nexti = item_af
|
||||||
|
|
||||||
|
self._size -= 1
|
||||||
|
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
|
|||||||
@@ -56,11 +56,18 @@ class test_single_linked_list(unittest.TestCase):
|
|||||||
self.assertEqual(2, len(sl))
|
self.assertEqual(2, len(sl))
|
||||||
self.assertEqual(2, sl._root.value)
|
self.assertEqual(2, sl._root.value)
|
||||||
|
|
||||||
|
|
||||||
sl.add(4)
|
sl.add(4)
|
||||||
sl.add(5)
|
sl.add(5)
|
||||||
sl.add(6)
|
sl.add(6)
|
||||||
print sl
|
|
||||||
|
sl.delete_item(len(sl) - 1)
|
||||||
|
self.assertEqual("2, 3, 4, 5", sl.__str__())
|
||||||
|
|
||||||
|
sl.delete_item(1)
|
||||||
|
self.assertEqual("2, 4, 5", sl.__str__())
|
||||||
|
|
||||||
|
sl.delete_item()
|
||||||
|
self.assertEqual("4, 5", sl.__str__())
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user