На высоком уровне, чтобы удалить любой узел, вам нужно сделать следующее:
1) Указать элемент, указывающий на узел, который вы хотите удалить.
2) Установите ссылку на элемент, который вы хотите удалить, на элемент, который вы хотите удалить, следующий элемент.
3) Удалить элемент, который вы хотите удалить.
Таким образом, ваша цепочка сохраняется, и вы освободили этот элемент из памяти.
Примерно так:
Head -> Item1 -> Item2 -> Item3 -> NULL
Если вы хотите удалить Item2, вы идете так:
Head -> Item1 -> Item2 -> Item3 -> NULL
^ ^ (Grab pointers to these items)
Установите Item1 рядом с Item2 следующим, затем удалите Item2.
/--------------\
Head -> Item1 Item2 -> Item3 -> NULL
^ ^ (Delete 2)
РЕДАКТИРОВАТЬ: Удаление элемента или элемента 3:
Head -> Item1 -> Item2 -> Item3 -> NULL
^ ^ (Grab pointers to these items)
Направьте голову на элемент 2, затем удалите элемент 1:
/--------------\
Head Item1 -> Item2 -> Item3 -> NULL
^ ^ (Delete 1)
ИЛИ
Head -> Item1 -> Item2 -> Item3 -> NULL
^ ^ (Grab pointers to these items)
Направьте голову на Item2, затем удалите Item1:
/--------------\
Head -> Item1 -> Item2 Item3 -> NULL
^ ^ (Delete 3)