From 57a852f3e8b803fbae125fb1a8fdbe6c9e48b93f Mon Sep 17 00:00:00 2001 From: julien lengrand-lambert Date: Sun, 8 Dec 2013 20:12:03 +0100 Subject: [PATCH] Implements the get method, that returns an element at a given index --- 04_linkedList/ll.py | 14 ++++++++++++++ 04_linkedList/ll_test.py | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/04_linkedList/ll.py b/04_linkedList/ll.py index 3b47641..bb0c799 100644 --- a/04_linkedList/ll.py +++ b/04_linkedList/ll.py @@ -104,6 +104,20 @@ class SingleLinkedList(): return False + def get(self, idx): + """ + Returns the element of the list located at idx + """ + item = self._root + if idx == 0: + return item.value + elif idx >= self._size: + raise Exception("Index is greater than the size of the list!") + + for i in range(idx): + item = item.nexti + return item.value + def __len__(self): # Returns the number of elements in the list return self._size diff --git a/04_linkedList/ll_test.py b/04_linkedList/ll_test.py index 9f8f176..efae8a8 100644 --- a/04_linkedList/ll_test.py +++ b/04_linkedList/ll_test.py @@ -108,6 +108,27 @@ class test_single_linked_list(unittest.TestCase): self.assertEqual(False, sl.search(4)) self.assertEqual(False, sl.search(12)) + def test_get(self): + + sl = SingleLinkedList() + + sl.add(2) + sl.add(1) + sl.add(3) + sl.add(4) + sl.add(5) + sl.add(6) + + self.assertEqual(6, len(sl)) + + self.assertEqual(2, sl.get(0)) + self.assertEqual(1, sl.get(1)) + self.assertEqual(3, sl.get(2)) + self.assertEqual(4, sl.get(3)) + self.assertEqual(5, sl.get(4)) + self.assertEqual(6, sl.get(5)) + + self.assertRaises(Exception, lambda x: sl.get(14)) if __name__ == "__main__": unittest.main()