Я разбираюсь со своими структурами данных и алгоритмами , и я только что столкнулся с проблемой удаления из линейных списков. Мне нужна помощь, в основном, с логи c, чтобы я мог с комфортом реализовать код на любом языке. Тем не менее, я изучаю C и C ++ в настоящее время и буду признателен, если какой-либо код будет написан в том же самом виде.
Учитывая приведенный ниже список, моя цель - удалить элемент c* 1006. *. 
После удаления новый список должен выглядеть следующим образом: 
Теперь обратите внимание, я сделал следующее по порядку чтобы придумать новый список:
1) Ищите c
2) Удалено c
3) Смещены остальные элементы влево, потому что:
По определению: Линейные списки должны быть последовательными. Один элемент идет за другим, и не должно быть никаких «пробелов»
Я понимаю логи c для выполнения поиска и сдвига и могу с удобством реализовать их в коде. Теперь моя проблема с логи c для удаления. Вот где мне нужна помощь.
Я реализую свои линейные списки, используя массивы (Не уверен, есть ли другой способ) . Уменьшение размера массива составляет , а не опция. Мне нужно, чтобы размер массива оставался неизменным ... 5 в этом случае
Резюме: Как удалить элемент из линейного списка?