Как добавить значение в последнем из связанного списка - PullRequest
0 голосов
/ 25 мая 2018

Как добавить значение в последний из связанного списка.Когда я запускаю код, метод addAtLast () не возвращает обновленный список.Последнее значение, т.е. 50, не добавляется в возвращаемый список.

public Node addAtLast(Node head, int data) {

    Node temp = head;
    Node newNode = new Node(data);
    while (null != temp)
        temp = temp.next;
    temp = newNode;
    System.out.println(temp);
    return head;

}

......

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Здесь:

temp = newNode;

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

Кроме того, вам нужно остановить итерацию, поскольку текущий элемент не имеет следующего элемента, а текущий элемент не равен null.В противном случае вы не оставите способ ссылаться на последний элемент, но null.

Вы должны написать что-то вроде:

while (temp.next != null)
    temp = temp.next;
// here temp refers the last element of the chain as it doesn't have next element
temp.next = newNode;
0 голосов
/ 25 мая 2018

temp = newNode; не влияет на исходный связанный список.

Чтобы добавить Node в конец списка, вы должны найти последний Node, который является первым Node, для которых temp.next == null.Затем вы изменяете temp.next этого Node, чтобы ссылаться на новый Node.

public Node addAtLast(Node head, int data) {
    if (head == null) { // handle adding the first Node
        return new Node(data);
    }
    Node temp = head;
    Node newNode = new Node(data);
    while (temp.next != null) {
        temp = temp.next;
    }
    temp.next = newNode;
    System.out.println(temp);
    return head;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...