Поскольку вы используете список, вам придется делать это иначе, чем с массивом, но вот как вы делаете это с массивом:
[0 | 1 | 2 | 3 | ? | ...]
Допустим, вы хотите добавить элемент 1.
Затем вы сохраняете адрес текущего указателя стека, переходите к тому, который хотите вставить, вставляете его, затем сдвигаете все элементы вперед и перемещаете указатель к предыдущему указателю - 1.
Результат:
[0 | 2 | 3 | ? | ...]
Вы должны сделать то же самое, но со своим списком.
Ваш стек выглядит так:
0->1->2->3->?
Вы хотите открыть 1, перейдите на узел 1
, вставьте его, затем переместите все элементы вперед:
0->2->3->?
.
Посмотрим, что произойдет, если вы просто удалите 1
:
0->? 2->3->?
Список обрезается, вам нужно присоединиться к нему.
Чтобы присоединиться к нему, вам нужно знать previous
узел и next
узел, тогда это так же просто, как previous.next = next
.
Поскольку мы не можем просто заглянуть назад, вам нужно отслеживать предыдущий узел при переборе списка, поэтому найдите нужный элемент, отслеживая предыдущий узел, а затем просто перепишите соединение с previous.next = current
, чтобы previous.next = current.next
, затем вы можете вернуть значение тока.