Обратный Iterator для LinkedList

115
10 февраля 2021, 23:50

Сам обратный Iterator работает, но уходит в бесконечность, как это можно поправить?

main.cpp

LinkedList<int> A;
for (int i = 1; i < 10; ++i)
{
    A.Add(i * 10);
}
LinkedList<int>::reverse_iterator rp;
rp = A.rbegin();
while (rp != A.rend())
{
    ++rp;
    std::cout << *rp << std::endl;
}

fuction.cpp

LinkedReverseListIterator & operator ++()//Pref.form
{
    typename LinkedList<T>::Elem<T> *item  = list->head;
    while (item->next != this->curItem)
    {
        item = item->next;
        if (item->next == NULL || item->next == this->curItem)
        {
            break;
        }
    }
    curItem = item;
    return *this;
}

LinkedReversIteratorList.h

#pragma once
#include "LinkedList.h"

template<class T>
class LinkedReverseListIterator
{
private:
    LinkedList<T> *list;//указатель на список, по которому будет перемещаться указатель
    typename LinkedList<T>::Elem<T> *curItem;//Elem<T> - указатель на текущий элемент в списке, нао который указывает итератор
public:
    LinkedReverseListIterator()
    {
        this->list = NULL;
        this->curItem = NULL;
    }
    LinkedReverseListIterator(LinkedList<T> *list, typename LinkedList<T>::Elem<T> *item)
    {
        this->list = list;
        this->curItem = item;
    }
    bool operator ==(LinkedReverseListIterator<T> &p)
    {
        return (this->list == p.list) && (this->curItem == p.curItem);
    }
    bool operator !=(LinkedReverseListIterator<T> &p)
    {
        return !(*this == p);
    }
    T & operator *()
    {
        return this->curItem->value;
    }
    LinkedReverseListIterator & operator ++()//Pref.form
    {
        typename LinkedList<T>::Elem<T> *item  = list->head;
        while (item->next != this->curItem)
        {
            item = item->next;
            if (item->next == NULL || item->next == this->curItem)
            {
                break;
            }
        }
        curItem = item;
        return *this;
    }
    /*LinkedReverseListIterator operator ++(int z)//Postf.form
    {
        LinkedReverseListIterator<T> tmp = *this;//copy ctor is not nesessary
        if (this->curItem != NULL)
        {
            this->curItem = this->curItem->next;
        }
        return tmp;
    }*/
};
READ ALSO
Проблема с сохранением в QSettings

Проблема с сохранением в QSettings

Необходимо реализовать сохранения состояния программы

131
Настройка отображение итема в QTreeView

Настройка отображение итема в QTreeView

Нужно чтобы в QTreeView каждый итем отображался примерно так:

99
Проблемы с ресемплингом аудио данных

Проблемы с ресемплингом аудио данных

Столкнулся с проблемой аудио-ресемплинга, точнее не совсем понятной логикой работы функци swr_convert_frame

93
Сортировка по алфавиту и по приоритету

Сортировка по алфавиту и по приоритету

Сделал сортировку фамилий пузырьком по алфавиту , но не удаётся сделать по приоритету (Статус)Суть моей задачи в том, что надо вводимую информацию...

125