본문 바로가기

알고리즘/해커랭크

[해커랭크] Reverse a doubly linked list [JAVA]

문제링크: www.hackerrank.com/challenges/reverse-a-doubly-linked-list/problem

 

Reverse a doubly linked list | HackerRank

Given the head node of a doubly linked list, reverse it.

www.hackerrank.com

오랜만에 자료구조를 생각하려니까 머리가 아팠다. 해커랭크에 좋은 자료구조 연습 문제들이 있어서 더 풀어보려 한다.

처음에 head에는 쓰레기 데이터가 있고 next부터 출력하는거라 가정하고 문제를 풀었더니 당연히 틀렸다.

출력을 해보니 모든 노드에는 데이터가 있었다.

풀이법을 말로 설명하는 것보다 코드를 보는것이 깔끔하겠다. 


    // Complete the reverse function below.

    /*
     * For your reference:
     *
     * DoublyLinkedListNode {
     *     int data;
     *     DoublyLinkedListNode next;
     *     DoublyLinkedListNode prev;
     * }
     *
     */
     
     
    static DoublyLinkedListNode reverse(DoublyLinkedListNode head) {

        DoublyLinkedListNode newHead = head;
        head.prev =  head.next;
        head.next = null;
        head = head.prev;
        while(head!=null){
            head.prev = head.next;
            head.next = newHead;
            newHead = head;
            head = head.prev;
        }
    
        return newHead;
    }