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
|
||||
self._root = item
|
||||
self._size -= 1
|
||||
elif node >= self.size():
|
||||
elif node >= self._size:
|
||||
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):
|
||||
|
||||
@@ -56,11 +56,18 @@ class test_single_linked_list(unittest.TestCase):
|
||||
self.assertEqual(2, len(sl))
|
||||
self.assertEqual(2, sl._root.value)
|
||||
|
||||
|
||||
sl.add(4)
|
||||
sl.add(5)
|
||||
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__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user