есть кое-что, что я не могу придумать ... По сути, мне дана следующая структура данных:
struct node_ll {
int payload;
node_ll *next; //pointer to next node
};
По сути, это набор чисел.Мне нужно создать метод со следующим прототипом:
int tail_return(node_ll **list)
, где **list
- адрес памяти вышеупомянутой структуры данных.Моя реализация выглядит следующим образом:
int tail_return(node_ll **list) {
node_ll *temp;
temp = *list;
node_ll *prev_temp;
prev_temp = *list;
bool firstPass = true;
while(temp){
if(firstPass == true){
temp = temp->next;
firstPass = false;
} else {
temp = temp->next;
prev_temp = prev_temp->next;
}
}
int toReturn = prev_temp->payload;
prev_temp->payload = 0;
(**list).next = prev_temp;
delete temp;
delete prev_temp;
return toReturn;
}
Однако я получаю следующие результаты тестовых запусков:
List a after head insertion of 2,4,6,8,10 elements:
{10,8,6,4,2}
now removing the last element
DELETED: 2
{10,0} where it's supposed to be: {10,8,6,4}
Что я делаю не так?Очевидно, метод находит правильное значение для удаления - 2. Но почему, когда я пытаюсь распечатать его после удаления, я получаю 10 и 0?