From aa4c8ae5b4045b9a0f379b7390c67e1822d0c8d6 Mon Sep 17 00:00:00 2001 From: Donne Martin Date: Mon, 31 Oct 2016 07:19:56 -0400 Subject: [PATCH] Update LL delete mid challenge (#112) Update constraints and assumptions, solution, and test case. --- .../delete_mid/delete_mid_challenge.ipynb | 17 +++++++++++++---- .../delete_mid/delete_mid_solution.ipynb | 10 +++------- linked_lists/delete_mid/test_delete_mid.py | 2 +- 3 files changed, 17 insertions(+), 12 deletions(-) diff --git a/linked_lists/delete_mid/delete_mid_challenge.ipynb b/linked_lists/delete_mid/delete_mid_challenge.ipynb index 6271f67..5b452fa 100644 --- a/linked_lists/delete_mid/delete_mid_challenge.ipynb +++ b/linked_lists/delete_mid/delete_mid_challenge.ipynb @@ -36,7 +36,7 @@ "\n", "* Can we assume this is a non-circular, singly linked list?\n", " * Yes\n", - "* What if the final node is being deleted, for example a single node list? Do we make it a dummy with value None?\n", + "* What if the final node is being deleted, do we make it a dummy with value None?\n", " * Yes\n", "* Can we assume we already have a linked list class that can be used for this problem?\n", " * Yes" @@ -141,12 +141,21 @@ "\n", " print('Test: Multiple nodes')\n", " linked_list = MyLinkedList(None)\n", - " node0 = linked_list.insert_to_front(1)\n", + " node0 = linked_list.insert_to_front(2)\n", " node1 = linked_list.insert_to_front(3)\n", " node2 = linked_list.insert_to_front(4)\n", " node3 = linked_list.insert_to_front(1)\n", - " linked_list.delete_node(node2)\n", - " assert_equal(linked_list.get_all_data(), [1, 3, 1])\n", + " linked_list.delete_node(node1)\n", + " assert_equal(linked_list.get_all_data(), [1, 4, 2])\n", + "\n", + " print('Test: Multiple nodes, delete last element')\n", + " linked_list = MyLinkedList(None)\n", + " node0 = linked_list.insert_to_front(2)\n", + " node1 = linked_list.insert_to_front(3)\n", + " node2 = linked_list.insert_to_front(4)\n", + " node3 = linked_list.insert_to_front(1)\n", + " linked_list.delete_node(node0)\n", + " assert_equal(linked_list.get_all_data(), [1, 4, 3, None])\n", "\n", " print('Success: test_delete_node')\n", "\n", diff --git a/linked_lists/delete_mid/delete_mid_solution.ipynb b/linked_lists/delete_mid/delete_mid_solution.ipynb index 0f4dca5..8ffcbe9 100644 --- a/linked_lists/delete_mid/delete_mid_solution.ipynb +++ b/linked_lists/delete_mid/delete_mid_solution.ipynb @@ -35,7 +35,7 @@ "\n", "* Can we assume this is a non-circular, singly linked list?\n", " * Yes\n", - "* What if the final node is being deleted, for example a single node list? Do we make it a dummy with value None?\n", + "* What if the final node is being deleted, do we make it a dummy with value None?\n", " * Yes\n", "* Can we assume we already have a linked list class that can be used for this problem?\n", " * Yes" @@ -98,14 +98,10 @@ "class MyLinkedList(LinkedList):\n", "\n", " def delete_node(self, node):\n", - " if self.head is None or node is None:\n", - " return\n", - " if self.head == node:\n", - " self.head = None\n", + " if node is None:\n", " return\n", " if node.next is None:\n", " node.data = None\n", - " node.next = None\n", " else:\n", " node.data = node.next.data\n", " node.next = node.next.next" @@ -150,7 +146,7 @@ " head = Node(2)\n", " linked_list = MyLinkedList(head)\n", " linked_list.delete_node(head)\n", - " assert_equal(linked_list.get_all_data(), [])\n", + " assert_equal(linked_list.get_all_data(), [None])\n", "\n", " print('Test: Multiple nodes')\n", " linked_list = MyLinkedList(None)\n", diff --git a/linked_lists/delete_mid/test_delete_mid.py b/linked_lists/delete_mid/test_delete_mid.py index 5131c36..8e72fa7 100644 --- a/linked_lists/delete_mid/test_delete_mid.py +++ b/linked_lists/delete_mid/test_delete_mid.py @@ -13,7 +13,7 @@ class TestDeleteNode(object): head = Node(2) linked_list = MyLinkedList(head) linked_list.delete_node(head) - assert_equal(linked_list.get_all_data(), []) + assert_equal(linked_list.get_all_data(), [None]) print('Test: Multiple nodes') linked_list = MyLinkedList(None)