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()
Exemple #2
0
    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)