создать Лист и от листа Стек [закрыт]

199
15 января 2019, 16:20

создать клас Лист и унаследовав от него клас Стек. в листе только два метода add и remove. Не знаю з чего начать. Эсть у кого код? Вопрос в том делать ли на ссылках или на масиве.

Answer 1
template <class T>
class List {
protected:
    struct Node {
        T value;
        T* next;
        Node(T& v = T()) : value(v), next(0) {}
    };
    Node* head;
    Node* tail;        
public:
    List();
    List(const List&);
    List& operator =(const List&);
    ~List();
    void add(const T&);
    void remove(Node*);
};
template <class Tp>
class My_stack : List<Tp> {
public:
    void push(const Tp& v) { add(v); }
    void pop()             { remove(this->tail); }
    Tp& top() const        { return *(this->tail); }
    bool empty() const     { return !(this->head) ; }
    size_t size() const
    {
        if (empty())  return 0;
        size_t sz{};
        for (typename List<Tp>::Node* p = this->head; p; p = p->next)
            ++sz;
    }
};

Или погуглив или в SO вы найдете много примеров реализации односвязного списка. У каждого свой подход. Поняв идею, напишите по своему...

READ ALSO
Проблемы со структурами C++

Проблемы со структурами C++

Есть структура с двумя параметрами: слово (str) и число (cnt; не спрашивайте зачем, это не важно)Создан массив этой структуры

245
Точка входа в программу

Точка входа в программу

Почему при точке входа WinMain/wWinMain не запускается консольА при точке входа main - запускается

195
C++ установить точность вычислений для double

C++ установить точность вычислений для double

имеется данный код, но он выводит не ожидаемый результаткак это исправить?

171
бесконечный цикл (scanf), не понимаю почему

бесконечный цикл (scanf), не понимаю почему

Как-то по-уродски код вставился

199