Ejemplo n.º 1
0
    def test_node_delete(self):
        node_1 = Node(3)
        node_2 = Node(4)
        node_3 = Node(5)

        node_1.next = node_2
        node_2.next = node_3
        node_2.prev = node_1
        node_3.prev = node_2

        node_2.delete()

        self.assertEqual(node_1.next, node_3)
        self.assertEqual(node_3.prev, node_1)
Ejemplo n.º 2
0
def insert_at_beginning(head, data):
    temp = head
    new_node = Node(data)
    new_node.next = temp
    temp.prev = new_node
    head = new_node
    return head
Ejemplo n.º 3
0
def clone_list(lst):

    # step 1
    # append new nodes after existing nodes
    current = lst.head
    while current:
        current_next = current.next
        new_node = Node(current.key, current.data + " :: new")
        current.next = new_node
        new_node.next = current_next
        current = current_next

    # step2
    # assign random pointers
    current = lst.head
    while current:
        if current.random:
            current.next.random = current.random.next
        current = current.next.next

    # step 3
    # seperate two lists
    new_list = DoublyList()
    new_head = lst.head.next
    new_list.head = new_head

    old = lst.head
    new = new_head
    while old:
        old.next = new.next
        old = old.next
        new.next = old.next if old else None
        new = new.next if new else None
    return new_list
Ejemplo n.º 4
0
 def test_has_next(self):
     node = Node(1)
     second_node = Node(2)
     node.next = second_node
     self.assertIs(node.next, second_node)
from doubly_linked_list import Node, DoublyLinkedList

if __name__ == '__main__':
    llist = DoublyLinkedList()

    llist.head = Node(1)
    second = Node(2)
    third = Node(4)

    llist.head.next = second
    second.next = third

    llist.print_list()

    llist.insert_after(2, 3)
    print('\nInserting 3 after 2 ..')
    llist.print_list()

    llist.append(5)
    print('\nAppending 5 ..')
    llist.print_list()

    llist.insert_before(2, 0)
    print('\nInserting 0 before 2 ..')
    llist.print_list()

    llist.delete_node_position(4)
    print('\nDeleting node at position 4 ..')
    llist.print_list()

    print('\nCount:', llist.get_count())
Ejemplo n.º 6
0
 def addAtStart(self, value):
   tempNode = Node(value)
   self.head.prev = tempNode
   tempNode.next = self.head
   self.head = tempNode
   self.printList()