Можно ли удалить только последний элемент, добавленный в сумку, или можно удалить любой элемент?Более общий случай - запрос на удаление из связанного списка.
Чтобы удалить узел (элемент) из связанного списка (сумка), вам необходимо знать родительский элемент элемента, который вы хотите удалить.Родителем узла является узел, который next_ptr является узлом.Итак, в цикле вам нужно отследить родителя навигатора:
while(navigator->next_ptr != NULL)
{
/* a sample list */
/* "parent" --> "navigator" --> "navigator->next_ptr" */
parent = navigator; /* now we know who points to navigator */
navigator = navigator->next_ptr;
tail = navigator;
}
Как только мы узнаем родителя навигатора, все, что нужно сделать для удаления навигатора:
parent->next_ptr = navigator->next_ptr;
/* now the list looks like */
/* "parent" --> "navigator->next_ptr" */
А теперь навигатор удален из сумки.
Я думаю, что со многими из ваших циклов while все еще есть проблемы, но для их исправления требуется больше информации о ваших намерениях.