Я пытаюсь перегрузить operator-- в односвязном списке.Operator-- в объединенном списке
У меня есть класс узла с: T Информация NODETYPE * ссылка
итератора класса (который является другом односвязанны список) с: NODETYPE * первый NODETYPE * тока BOOL offTheEdge
односвязанны класс Список с: * первая * последняя
Я успешно модифицировал метод оператора ++ и я передаю все тесты. Код выглядит следующим образом:
if(offTheEdge == true)
{
return *this;
}
else
{
if(current->link == NULL)
{
offTheEdge = true;
return *this;
}
else
{
current = current->link;
}
}
return *this;
Мои инструкции являются следующие: же, как оператор ++, но идет в обратном направлении. Переход назад в односвязном списке означает, что вам нужно начинать с начала и идентифицировать узел, где находится этот -> текущий.
Пожалуйста, помогите, что бы я ни старался, я не могу получить предыдущие элементы и работать в обратном направлении. Спасибо!
Мой код operator-- является:
ListIterator<T> temp;
temp.current = first;
while(temp.current->link != this->current)
{
temp.current = temp.current->link;
}
return temp;
Если мой список 2,4,6,8,10,12,14,16,18,20 .... она возвращает 20 каждый раз
Ваши инструкции в основном говорят вам, что именно делать. Вы пробовали «вы должны начать с самого начала и идентифицировать узел, где находится этот -> текущий»? Можете ли вы показать нам, что у вас есть до сих пор? – GWW
Просто перебирайте весь список, используя 'current-> link == oldCurrent' – goji
Другими словами, вам нужно начинать с' head' и использовать цикл. – Adam