Reverse a doubly linked list

/*
     * For your reference:
     *
     * DoublyLinkedListNode {
     *     int data;
     *     DoublyLinkedListNode next;
     *     DoublyLinkedListNode prev;
     * }
    */
    
    static DoublyLinkedListNode reverse(DoublyLinkedListNode head) {
        DoublyLinkedListNode current = head;
        DoublyLinkedListNode temp = null;
        //swap next and prev of all nodes of double linkedlist
        while (current!=null){
           temp = current.prev;
           current.prev = current.next;
           current.next = temp;
           current = current.prev;//move to last one
        }
        //check before changing head
        if (temp!=null){
            head = temp.prev;
        }
        return head;
    }

 

posted @ 2020-04-14 13:19  johnny_zhao  阅读(115)  评论(0编辑  收藏  举报