Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_infu.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
37.74 Кб
Скачать

34.Перегрузка оператора

Средства перегрузки операторов полезны тогда, когда желательно, чтобы пользовательские типы данных в исходном тексте программ выглядели в выражениях подобно встроенным типам Си++. Передача по ссылке обеспечивает эффективный вызов функции, без копирования параметров, а константное описание защищает параметры от изменений. Правила размещения перегруженных операторов аналогичны правилам размещения функций: прототипы отдельно, определения отдельно (возможно, прототипы операторов расположены в заголовочном файле, а определения – в файле реализации). Аналогично арифметическим операторам, в Си++ допускается перегружать операторы потокового ввода/вывода ">>" и "<<"

35.Реализация стека с применением структуры , основные операции

Основные свойства стека:

1) Элементы добавляются или удаляются только сверху стека.

2) Для добавления элемента применяется функция "push()".

3) Для удаления элемента применяется функция "pop()

Реализация стека на основе статического массива struct Stack { double v[20]; int top; }; После описываем void push.. and double pop.

Реализация стека с использованием динамической памяти Для реализации стека можно предложить структуру, позволяющую создать стек произвольного размера и работать с элементами стека через указатели. struct DStack { double* bottom; double* top; int size ;}; Массив для хранения элементов стека должен создаваться динамически на этапе инициализации. Два внутренних указателя стека ссылаются на начало массива ("bottom") и на элемент-верхушку стека ("top").

Для работы со стеком целесообразно сделать несколько обслуживающих функций:

  1. Инициализация стека. bool DStack_init( DStack& s, int N ); создает целочисленный массив размером N

  2. Добавление элемента в стек. bool DStack_push( DStack& s, double val ); Помещает элемент на верх стека. Возвращает "true", если это удалось сделать, или "false", если стек целиком заполнен.

  3. Извлечение верхнего элемента. double DStack_pop( DStack& s ); Возвращает верхний элемент из стека или возвращает 0.0 (или некоторое другое специально оговоренное значение), если стек пуст.

  4. Проверка на пустоту. bool DStack_empty( Dstack& s ); Возврашает "true", если стек пуст, или "false" в противном случае.

  5. Удаление стека. void DStack_free(); Освобождает динамическую память, занятую при создании стека.

36. Операции над символьными типами данных. Понятие таблицы ANC

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]