Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací

Diskuze: C++ rekurzivni metoda pro vlozeni prvku

C a C++ C a C++ C++ rekurzivni metoda pro vlozeni prvku American English version English version

Aktivity (1)
Avatar
Sqieeeze
Člen
Avatar
Sqieeeze:7. prosince 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. prosince 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.