From 6b750028f954dc182ad079272536735faecf3a75 Mon Sep 17 00:00:00 2001 From: julien lengrand-lambert Date: Sun, 8 Dec 2013 14:39:30 +0100 Subject: [PATCH] Finished implementing a first version of delete_item --- 04_linkedList/ll.py | 15 ++++++++++++++- 04_linkedList/ll_test.py | 11 +++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/04_linkedList/ll.py b/04_linkedList/ll.py index 4a03da2..caa3f90 100644 --- a/04_linkedList/ll.py +++ b/04_linkedList/ll.py @@ -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): diff --git a/04_linkedList/ll_test.py b/04_linkedList/ll_test.py index c74d94c..38e406d 100644 --- a/04_linkedList/ll_test.py +++ b/04_linkedList/ll_test.py @@ -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()