Единый связанный список - получить и добавить методы - PullRequest
3 голосов
/ 12 октября 2019

Поэтому я пытаюсь реализовать класс SLList, выполнив следующие реализации:

get(i), set(i, x), add(i, x) и remove(i) операций, каждая из которых выполняется в O (1 + i). Время

Моя программа борется с методами add и get. Я продолжаю получать ошибки incompatible types: SLList<T>.Node cannot be converted to int, а также incompatible types: SLList<T>.Node cannot be converted to int.

Я очень запутался в том, как их исправить. Я только что узнал о связанных списках сегодня, и я изо всех сил пытаюсь понять их концепцию. Мы будем благодарны за любую помощь или подсказки.

public T get(int i) {
    // TODO: Implement this
    Node u = head;
    for(int j = 0; j < i; j++){
        i = u.next;
    }
    return u;
    if (i < 0 || i > n - 1) throw new IndexOutOfBoundsException();
    return null;
}


public void add(int i, T x) {
        Node u = new Node();
        u.x = x;
        if (i == 0) {
            head = u;
        } else {
            tail.next = u;
        }
        tail = u;
        i++;
        return true;
        if (i < 0 || i > n) throw new IndexOutOfBoundsException();
}

Я должен упомянуть тип каждой функции T, и void должен оставаться таким, какой он есть. Также я считаю, что я должен включить в свой код часть IndexOutOfBoundsException.

Если вы, ребята, хотите увидеть мой полный код здесь: https://pastebin.com/nJ9iMjxj

Ответы [ 2 ]

2 голосов
/ 12 октября 2019

В вашем классе node тип next равен node, а в вашем методе get вы присваиваете node целочисленной переменной:

i = u.next;

Я не вижу всей вашей реализации, но я думаю, что это должно быть u = u.next;

1 голос
/ 12 октября 2019

В вашем методе get вы пытаетесь присвоить Node переменной int в строке 5. Вместо этого вы должны написать u=u.next;

...