Очередь: логические объекты put () в конце очереди - PullRequest
0 голосов
/ 03 декабря 2018

Я сделал код (1) в классе некоторое время назад, означает ли этот код, что объект newObj будет помещен в начало очереди?Если да, то можно ли (2) разместить объект newObj в конце с указателем сзади, указывающим на последний узел?

(1)

public boolean put(AnyClass newObj) {
    if (currNodes == maxNodes) {
        return false;
    } else {
        Node newNode = new Node(newObj);

        if (front == null) {
            front = newNode;
        } else {
            rear.next = newNode;
        }

        rear = newNode;
        currNodes++;

        return true;
    }
}

(2)

public boolean put(AnyClass newObj) {
    if (currNodes == maxNodes) {
        return false;
    } else {
        Node newNode = new Node(newObj);

        if (rear == null) {
            rear = newNode;
        } else {
            front.next = newNode;
        }


        front = newNode;
        currNodes++;

        return true;
    }
}

1 Ответ

0 голосов
/ 03 декабря 2018

Ваш первый код помещает новый элемент в конец (сзади) очереди.Тем не менее, второй код не помещает новый элемент в начало (спереди), и он делает совершенно другое, потому что это один связанный список, и у вас нет указателя на заднюю часть (я предполагаю, что next указатели вашего связанного списка направлены спереди назад).

Если вы нарисуете связанный список на бумаге и построчно выполняете код, вы хорошо поймете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...