Exemplo n.º 1
0
    def test_insert(self):
        """
        Tests the insert(index, data) method
        """
        dll = DoublyLinkedList()

        # test out of bounds
        self.assertIsNone(dll.insert(-1, 'data'))
        self.assertIsNone(dll.insert(1, 'data'))

        # test inserting at index zero in open list (should use unshift(data))
        dll.insert(0, 'node zero')
        self.assertEqual(dll.length, 1)
        self.assertEqual(dll.head.data, 'node zero')

        dll.clear()
        dll.push(0)  # index 0
        dll.push(1)  # index 1
        dll.push(2)  # index 2

        # insert at index 1
        expected_list = [0, 'insert one', 1, 2]
        self.assertIsInstance(dll.insert(1, 'insert one'), DoublyLinkedList)
        self.assertEqual(dll.length, 4)
        self.assertEqual(dll.to_list(), expected_list)

        # insert at tail, index 4
        expected_list = [0, 'insert one', 1, 2, 'insert tail']
        self.assertIsInstance(dll.insert(4, 'insert tail'), DoublyLinkedList)
        self.assertEqual(dll.length, 5)
        self.assertEqual(dll.to_list(), expected_list)
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()