mirror of
https://github.com/jlengrand/Coding4Interviews.git
synced 2026-03-10 08:11:24 +00:00
Finishes implementing delete
This commit is contained in:
@@ -47,12 +47,12 @@ class SingleLinkedList():
|
|||||||
|
|
||||||
self._size += 1
|
self._size += 1
|
||||||
|
|
||||||
def delete_item(self, node=None):
|
def delete_item(self, node=0):
|
||||||
"""
|
"""
|
||||||
Deletes the nth node of the list. (0 being the first element)
|
Deletes the nth node of the list. (0 being the first element)
|
||||||
If node is None, deletes the first element of the list.
|
If node is None, deletes the first element of the list.
|
||||||
"""
|
"""
|
||||||
if node == None:
|
if node == 0:
|
||||||
item = self._root.nexti
|
item = self._root.nexti
|
||||||
self._root = item
|
self._root = item
|
||||||
self._size -= 1
|
self._size -= 1
|
||||||
@@ -74,6 +74,22 @@ class SingleLinkedList():
|
|||||||
|
|
||||||
self._size -= 1
|
self._size -= 1
|
||||||
|
|
||||||
|
def delete(self, value):
|
||||||
|
"""
|
||||||
|
Deletes the first node in the list that contains value
|
||||||
|
"""
|
||||||
|
ptr=0
|
||||||
|
item = self._root
|
||||||
|
while(item != None):
|
||||||
|
if item.value == value:
|
||||||
|
self.delete_item(ptr)
|
||||||
|
return
|
||||||
|
|
||||||
|
item = item.nexti
|
||||||
|
ptr += 1
|
||||||
|
|
||||||
|
print "Going there!"
|
||||||
|
raise Exception("Value not found in the list")
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
# Returns the number of elements in the list
|
# Returns the number of elements in the list
|
||||||
@@ -85,6 +101,9 @@ class SingleLinkedList():
|
|||||||
This way of doing is not exactly clever, given the fact that I put
|
This way of doing is not exactly clever, given the fact that I put
|
||||||
everything in memory before printing
|
everything in memory before printing
|
||||||
"""
|
"""
|
||||||
|
if self._root == None:
|
||||||
|
return "Empty List"
|
||||||
|
|
||||||
to_print = ""
|
to_print = ""
|
||||||
curr = self._root
|
curr = self._root
|
||||||
to_print += str(curr.value)
|
to_print += str(curr.value)
|
||||||
@@ -101,3 +120,5 @@ if __name__ == "__main__":
|
|||||||
ll.add(5)
|
ll.add(5)
|
||||||
ll.add(6)
|
ll.add(6)
|
||||||
print ll
|
print ll
|
||||||
|
|
||||||
|
ll.delete(14)
|
||||||
@@ -69,5 +69,27 @@ class test_single_linked_list(unittest.TestCase):
|
|||||||
sl.delete_item()
|
sl.delete_item()
|
||||||
self.assertEqual("4, 5", sl.__str__())
|
self.assertEqual("4, 5", sl.__str__())
|
||||||
|
|
||||||
|
def test_delete(self):
|
||||||
|
sl = SingleLinkedList()
|
||||||
|
|
||||||
|
sl.add(2)
|
||||||
|
sl.add(1)
|
||||||
|
sl.add(3)
|
||||||
|
self.assertEqual(3, len(sl))
|
||||||
|
|
||||||
|
self.assertEqual(2, sl._root.value)
|
||||||
|
|
||||||
|
self.assertRaises(Exception, lambda x: sl.delete(4))
|
||||||
|
|
||||||
|
sl.delete(1)
|
||||||
|
self.assertEqual("2, 3", sl.__str__())
|
||||||
|
|
||||||
|
sl.delete(2)
|
||||||
|
self.assertEqual("3", sl.__str__())
|
||||||
|
|
||||||
|
sl.delete(3)
|
||||||
|
self.assertEqual("Empty List", sl.__str__())
|
||||||
|
self.assertEqual(0, len(sl))
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|||||||
Reference in New Issue
Block a user