C++ для начинающих. Удаление элемента из двусвязного списка

Продолжаем знакомиться с двусвязным списком. Чтобы не загромождать статью с ознакомлением создания двусвязного списка, я сделал этот материал как отдельный, но, это все из одной «каши». Смотрим и учимся удалять элемент из двусвязного списка.
Функция удаления немного сложна для понимания, потому как в зависимости от позиции элемента может быть различное написание кода.

    Посмотрим на возможные варианты

  • Список пустой (Чего удалять если ничего нет)
  • Указанный элемент больше числа элементов в списке
  • В списке всего один элемент
  • В списке несколько элементов и удаляется первый
  • Удаляется последний элемент списка

Вот для каждого случая приходится писать маленький кусочек кода. Из-за этого функция удаления из двусвязного списка получается не самой маленькой.

Чтобы немного упростить задачу, нужно ввести переменную-счетчик, считающую число элементов в списке. (Так кода будет поменьше).

Итак, считаю, что с созданием списка вы уже знакомы и способны писать его даже с закрытыми глазами. Поэтому сосредотачиваю ваше внимание непосредственно на функции удаления элемента из двусвязного списка.
Код С++. Удаление из двусвязного списка

Можно по другому делать, но принцип везде будет 1 и тот же. Я предпочел в зависимости от ситуации выполнять код и сразу выходить из функции удаления (Ну а зачем проверять то, что уже не нужно). Главное не забывать, что если есть счетчик элементов (а он у меня тут есть), то при добавлении его надо увеличивать, при удалении уменьшать.

Я сознательно не пишу код, обозначая вероятные ошибки (например, если удаляемый элемент — это число, которое больше чем вообще чисел в списке). Так можно сосредоточить внимание на нужном. НО, обязательно допишите этот кусочек сами. Это очень важно. (имеется ввиду кусочек, исключающий некорректный ввод данных для удаления).

Схематично получилось не слишком наглядно, но может внесет ясности.
Схема удаления элемента из списка
Узел можно удалить только тогда, когда не нарушится связь с другими элементами.
Надеюсь этот материал чему-то вам помог и смог чему-то вас научить.

Все комментарии на сайте проверяются, поэтому ваш комментарий может появиться не сразу. Для вставки кода в комментарий используйте теги: [php]ВАШ_КОД[/php]

5 комментариев: C++ для начинающих. Удаление элемента из двусвязного списка

  • Иван говорит:

    Добрый день. Здесь ведь не всё ещё?

  • Иван говорит:

  • Иван говорит:

    Какое-же гигантское, человеческое спасибо Вам! Как же вы помогли всё это понять…вот теперь задачи нарешиваю:)

  • Артем говорит:

    А почему в цикле for при удалении элемента где-то в середине списка мы адрес указываем х-1? ведь х это значение переменной.

    • admin говорит:

      Это не адрес указывается. Это указывается число, которое обозначает количество необходимых итераций. Пока i не станет равным (x-1), цикл for будет работать.
      x — это то число, которое отдаётся вовнутрь функции.

Добавить комментарий

Ваш e-mail не будет опубликован.

Поиск

 
     
Яндекс.Метрика

НАГРАДИ АВТОРА САЙТА
WEBMONEY
R375024497470
U251140483387
Z301246203264
E149319127674

Встречает в аду один черт другого и говорит: "Слушай, это ты того компьютерщика сюда притащил?" - "Да, а что?" - "Ты в другой раз толком объясняй, что такое ад - а то он, пока понял, что это не Doom, двести чертей перестрелял..."

Выражаю свою признательность

  • Максиму очень признателен за указание на мои ошибки и неточности.
  • Sergio ===> за оказание помощи в исправлении моих ошибок
  • Gen ===> за правильное стремление помочь другим новичкам и выявления моих ошибок