Deleting the head node of a circular linked list
Since you are dealing with a circularly linked list (meaning the tail's next points to head and the head's prev points to the tail) and assuming each node has a prev and next, you might consider this easier approach which does not require traversal of the entire list.

public ListNode deleteAtHead(ListNode head) {
    if (head == null) {
        return head;
    }

    ListNode newHead = head.next;
    newHead.prev = head.prev;
    head.prev.next = newHead;

    head.next = null;
    head.prev = null;

    return newHead;
}


This should also work for a list with only 1 node (e.g. a head) assuming it is initialized with prev and next referencing itself.