Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Sqieeeze
Člen
Avatar
Sqieeeze:7.12.2018 22:29

Ahoj,
mám problém a potřeboval bych nasměrovat správným směrem.
list.hpp

namespace pjc {
        class list {
        private:
                struct node {
                        double val = 0;
                        node* prev = nullptr;
                        node* next = nullptr;
                };

                node* head = nullptr;
                node* tail = nullptr;
                size_t num_elements = 0;

        public:
                void push_back(double elem);

    using difference_type = std::ptrdiff_t;
        using iterator_category = std::bidirectional_iterator_tag;
        using value_type = const double;
        using reference = const double&;
        using pointer = const double*;

        const_iterator() = default;
        const_iterator(node* ptr, const list* gen);

        const_iterator& operator++();
        const_iterator operator++(int);
        const_iterator& operator--();
        const_iterator operator--(int);

        reference operator*() const;
        pointer operator->() const;

        bool operator==(const const_iterator& rhs) const;
        bool operator!=(const const_iterator& rhs) const;

        friend class list;
    };

    class iterator {
        node* current_ptr = nullptr;
        const list* o_list = nullptr;
    public:
        using difference_type = std::ptrdiff_t;
        using iterator_category = std::bidirectional_iterator_tag;
        using value_type = double;
        using reference = double&;
        using pointer = double*;

        iterator() = default;
        iterator(node* ptr, const list* gen);

        iterator& operator++();
        iterator operator++(int);
        iterator& operator--();
        iterator operator--(int);

        reference operator*() const;
        pointer operator->() const;

        operator const_iterator() const;

        bool operator==(const iterator& rhs) const;
        bool operator!=(const iterator& rhs) const;

        friend class list;
        };

}

list.cpp

namespace pjc {
        void list::push_back(double elem)
        {
        }

}

Mám takto definovanou třídu list, která reprezentuje oboustranně spojený spojový seznam a můj problém je s metodou insert. Pokud tam chci přidat metodu

void list::insert(node** node, double elem)
        {
        }

Abych mohl prvky do seznamu vkládat rekursivně, hlásí mi to problém, že metoda není definovaná v list.hpp. Bohužel já tento soubor nesmím měnit. Proto bych byl rád, kdyby mi někdo dokázal poradit jak toho dosáhnout. Viz co jsem už zkoušel.

Zkusil jsem: Zkoušel jsem napsat jen

void insert(node** node, double elem)
        {
        }

bohužel potom nemám přístup k struktuře node. Pak mě napadá k tomu nepoužívat metodu ale například while cyklus. V dané třídě list mám definované i iterátory a nevím proč ale myslím si, že zadání mě navádí k tomu abych pro vkládání prvků používal iterátory(i když to může být blbost, co si myslím). Proto se na vás obracím s prosbou jak by to šlo vyřešit.

Děkuji za jakékoliv návrhy

Chci docílit: Snažím se vkládat prvky do seznamu a to rekurzivně a vždy tak, že přidám element na konec prvku.

 
Odpovědět
7.12.2018 22:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.