Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Алгоритмы и структуры данных: продвинутый уровень Удалить элемент из односвязного списка


Выпуск 7. Удалить элемент из односвязного списка

Здравствуйте, !
Написать функцию, которая удаляет звено (за исключением последнего) в односвязном списке, на вход поступает только звено списка, которое необходимо удалить.

Односвязный список -  это список, состоящий из элементов, каждый из которых указывает только на следующий.

Например, список = [4,5,1,9] выглядит так:


Пример 1:
Дано: head = [4,5,1,9], node = 5
Результат: [4,1,9]
Пояснение: элемент 4 раньше указывал на 5, а теперь указывает на 1, посколько 5 указывал на 1.
Пример 2:
Дано: head = [4,5,1,9], node = 1
Результат: [4,5,9]

Компилируемое решение: 

/** * Структура односвязного списка * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public void deleteNode(ListNode node) {
// надо удалить node, мы не знаем его предыдущего элемента, но знаем следующий ListNode
temp = node.next; // берем следующий элемент if (temp!=null) { // если он существует node.val = temp.val; // то наш удаляемый элемент принимает значение своего следующего node.next = temp.next; // и будет указывать на следующий за следующим temp = null; } // таким образом предыдущий от node, как указывал на него, так и указывает, но сам node поменял содержание } }


С уважением,
Наталия Македа
natalia.macheda at gmail.com
2021-03-25, Trento

Внимание!
Письмо, которое вы мне отправите с вопросами и коментариями по тематике данной рассылки, может быть опубликовано полностью или частично в данной рассылке, если в нём нет явного запрета на это.


© Наталия Македа 2021.
Все материалы рассылки защищены авторским правом. Любая перепечатка или использование материалов рассылки в коммерческих целях возможна лишь с письменного согласия автора. При некоммерческом использовании ссылка на выпуск обязательна.


В избранное