def main(): # Start with empty list llist = DoublyLinkedList() # Insert 6. So the list becomes 6->None llist.append(6) # Insert 7 at the beginning. # So linked list becomes 7->6->None llist.push(7) # Insert 1 at the beginning. # So linked list becomes 1->7->6->None llist.push(1) # Insert 4 at the end. # So linked list becomes 1->7->6->4->None llist.append(4) # Insert 8, after 7. # So linked list becomes 1->7->8->6->4->None llist.insert(llist.head.next, 8) print('###################') llist.printList() # So linked list becomes 1->7->8->2->6->4->None llist.insertAt(2, 2) llist.printList() print('###################') llist.delete(llist.head) llist.delete(llist.head.next) llist.delete(llist.head.next) llist.printList() print('###################') llist.deleteAt(2) llist.printList()
def test_delete(self): """ tests the delete(index) method """ dll = DoublyLinkedList() # test out of bounds self.assertIsNone(dll.delete(-1)) self.assertIsNone(dll.delete(1)) dll.push(0) # index 0 dll.push(1) # index 1 dll.push(2) # index 2 # test can delete head (index 0) deleted = dll.delete(0) self.assertIsInstance(deleted, Node) self.assertEqual(deleted.data, 0) self.assertEqual(dll.length, 2) # unshift the node back, then test delete at tail (index 2) dll.unshift(0) self.assertEqual(dll.to_list(), [0, 1, 2]) self.assertEqual(dll.length, 3) deleted = dll.delete(dll.length - 1) # index 2 self.assertIsInstance(deleted, Node) self.assertEqual(deleted.data, 2) self.assertEqual(dll.length, 2) # push the node back, then test delete from middle (index 1) dll.push(2) self.assertEqual(dll.to_list(), [0, 1, 2]) self.assertEqual(dll.length, 3) deleted = dll.delete(1) self.assertIsInstance(deleted, Node) self.assertEqual(deleted.data, 1) self.assertEqual(dll.length, 2)