Является ли двусвязный список нециклическим?

Вроде всё работает, как проверить является ли он циклическим? Также, очень редко, неправильно определяется самое больше значение в списке? (Нужно вставить его в начало списка)

1 <-> 7 <-> 5 <-> 2 <-> 1 <-> 7 <-> 1 <-> 6 <-> 2 <-> 10

Max: 7

7 <-> 1 <-> 7 <-> 5 <-> 2 <-> 1 <-> 7 <-> 1 <-> 6 <-> 2

import java.util.Random;
class Node {
    protected int data;
    protected Node next, prev;

    public Node() {
        next = null;
        prev = null;
        data = 0;
    }

    public Node(int d, Node n, Node p) {
        data = d;
        next = n;
        prev = p;
    }

    public void setLinkNext(Node n) {
        next = n;
    }

    public void setLinkPrev(Node p) {
        prev = p;
    }

    public Node getLinkNext() {
        return next;
    }

    public Node getLinkPrev() {
        return prev;
    }

    public void setData(int d) {
        data = d;
    }

    public int getData() {
        return data;
    }
}

class linkedList {
    protected Node start;
    public int size;

    public linkedList() {
        start = null;
        size = 0;
    }

    public boolean isEmpty() {
        return start == null;
    }

    public int getSize() {
        return size;
    }

    public void insertAtStart(int val) {
        Node nptr = new Node(val, null, null);
        if (start == null) {
            start = nptr;
        } else {
            start.setLinkPrev(nptr);
            nptr.setLinkNext(start);
            start = nptr;
        }
        size++;
    }

    public void maxToStart() {
        Node ptr = start;
        int max = start.getData();
        ptr = start.getLinkNext();
        while (ptr.getLinkNext() != null) {
            if (max < ptr.getData()) {
                max = ptr.getData();
            }
            ptr = ptr.getLinkNext();
        }
        System.out.println("\nMax = " + max);
        insertAtStart(max);
        deleteAtPos(11);
    }

    public void deleteAtPos(int pos){
        Node ptr = start.getLinkNext();
        for (int i = 2; i <= size; i++){
            if (i == pos){
                Node p = ptr.getLinkPrev();
                Node n = ptr.getLinkNext();
                p.setLinkNext(n);
                if(n!=null)
                n.setLinkPrev(p);
                size-- ;
                return;
            }
            ptr = ptr.getLinkNext();
        }        
    }    

    public void display() {
        System.out.print("List = \n\n");
        Node ptr = start;
        if (size == 0) {
            System.out.print("Empty\n");
            return;
        }
        if (start.getLinkNext() == start) {
            System.out.print(start.getData() + " <-> " + ptr.getData() + "\n");
            return;
        }
        System.out.print(start.getData() + " <-> ");
        ptr = start.getLinkNext();
        while (ptr.getLinkNext() != null) {
            System.out.print(ptr.getData() + " <-> ");
            ptr = ptr.getLinkNext();
        }
        System.out.print(ptr.getData() + "\n");
    }
}

public class Main {
    public static void main(String[] args) {
        linkedList list = new linkedList();
        Random r = new Random();

        for (int i = 0; i < 10; i++) {
            int rnd = r.nextInt(11);
            list.insertAtStart(rnd);
        }

        list.display();
        list.maxToStart();
        list.display();
    }
}

Ответы (0 шт):