Связанный список: К чему конкретно относится sth.next? - PullRequest
0 голосов
/ 01 июня 2018

Недавно я посмотрел серию видео LinkedList на YouTube, как вы можете видеть на картинке ниже:

введите описание изображения здесь

URL-адрес видео: https://www.youtube.com/watch?v=2RwWsHePdr8&index=11&list=PL6Zs6LgrJj3tWQfE6HK4JaX3wN96yhkD3

Нет Я хочу удалить число 15 (позиция 3), поэтому вот код:

if(position ==1) {
                ListNode temp = head;
                head = head.next;
                temp.next = null;
                return temp;
                }else {
                    ListNode previous = head;
                    int count =1;
                    while(count < position -1) {
                        previous = previous.next;
                        count++;
                    }

                    ListNode current = previous.next;
                    previous.next = current.next;
                    current.next = null;
                    return current;
                }

У меня один вопрос, который меня действительно смущает: На картинке: | 10| _ | -> |8 |__ |если я наберу: 『head.next』, значит ли это 8?или это означает, что пространство узлов рядом с 10?

Потому что в коде, который я раскрыл, я не могу понять, что: «почему последний код -『 current.next = null; 』?»Я думаю 『current.next』 указывает на номер 11 ??Если «current.next» означает узел рядом с 15, следует ли изменить предыдущий код «предыдущий.next = current.next» на «предыдущий.next = current.next.next»?Что означает, что 『current.next.next』 может относиться к номеру 11

Заранее спасибо !!

Обновление: означают ли head.next и head.next.next такие слова? введите описание изображения здесь

1 Ответ

0 голосов
/ 01 июня 2018

Слово следующий указывает на следующий узел, который состоит из адреса (адрес памяти в системе) и значения (например, 15)

Если вы знаете, что вам нужно удалить узел со значением 15, вы можете выполнить итерациючерез массив и указатель привязки этих узлов «рядом» с узлом, который 15 показывает на

ListNode temp = head;
while (temp.next != null){
    if (temp.next.value == 15):
        ListNode nodeWithValue15 = temp.next;
        temp.next = nodeWithValue15.next;
        // after rebinding address to your previous node, you can delete node with value 15
        nodeWithValue15 = null;
    temp = temp.next;

Здесь вы можете увидеть, что next.next делает

...