Перейти к основному содержимому

Шаблоны классов

Алиас: Стек.

Задание

Дано описание класса MyStack (Приложение 1, файл MyStack.h), который реализует на основе односвязного списка динамическую структуру данных типа стек.

  1. Разработайте реализацию класса MyStack.

    предупреждение

    Обратите внимание на то, что за основу объявления классов ListNode и MyStack вам нужно взять код заголовочного файла MyStack.h, приведенный в Приложении 1. Реализацию данных классов (определение методов) вам также придется описывать в том же заголовочном файле, в котором будут содержаться объявления данных классов. В данном случае в файле MyStack.h. О причинах невозможности разделить объявление от реализации класса описано также в Приложении 1.

  2. Разработайте функцию (глобальную), которая выполняет разложение на простые множители целого числа N. Для хранения множителей функция должна использовать класс MyStack. Прототип функции: void Multipliers(int n, MyStack<DATA> &stack).

  3. В функции main() распечатайте множители, которые функция Multipliers() записывает в стек, сначала по убыванию, а потом по возрастанию. Например, для N=3960 программа должна вывести:

    3960=11 * 5 * 3 * 3 * 2 * 2 * 2
    3960=2 * 2 * 2 * 3 * 3 * 5 * 11
  4. Классы ListNode и MyStack необходимо упаковать в самостоятельную статическую библиотеку.

предупреждение

Не забудьте реализовать конструкторы копирования и перегрузки оператора = для ListNode и MyStack.

Режимы выполнения программы

В данной лабораторной работе разделение на демонстрационный и интерактивный режим не требуется. Достаточно продемонстрировать работу функций класса MyStack так, как это указано в задании. При необходимости при очной демонстрации необходимо будет менять числа в коде программы и пересобирать программу для показа.

Методический материал

  1. Указания по выполнению работы
  2. Контрольные вопросы