
- •Абстрактные классы.
- •Аргументы функций по умолчанию.
- •Арифметические операции с указателями и с указателями на массивы.
- •Ввод-вывод в символьные массивы.
- •Виртуальные классы. Порядок вызова конструкторов и деструкторов.
- •Виртуальные функции.
- •Виртуальные функции-члены.
- •Виртуальный деструктор. Абстрактные классы.
- •Динамическая память. Указатели и массивы. Ссылочный тип.
- •Доступ к глобальным переменным, скрытым локальными переменными с тем же именем (оператор ::).
- •Доступ к членам базовых классов внутри производного класса.
- •Доступ к элементам массива. Вычисление размера массива. Многомерные массивы.
- •Дружественные классы и функции.
- •Закрытые, защищенные и открытые элементы класса.
- •Иерархия классов. Иерархия наследования классов.
- •Инициализация и разрушение (конструкторы и деструкторы).
- •Инициализация массивов по умолчанию. Явная инициализация массивов.
- •Инициализация безразмерных массивов
- •1. Инкапсуляция
- •2. Полиморфизм
- •3. Наследовние
- •22.Использование new и delete на примере динамических массивов, стеков, очередей.
- •Указатель this
- •Указатели на структуру
- •Массивы структур
- •Классы и объекты. Класс как структура.
- •Классы. Спецификаторы доступа public, protected, private.
- •Константные (const) и изменяемые (mutable) члены класса.
- •Конструктор копирования для контейнерного класса.
- •Конструкторы и деструкторы.
- •Конструкторы и способы обращения к ним.
- •Логические операции. Инкремент и декремент. Арифметические операции.
- •Объявление переменной массива
- •Множественное наследование.
- •Модификатор константы. Модификатор volatile. Модификатор const
- •Модификатор volatile
- •Модификатор const
- •Модификатор volatile
- •Объединения: синтаксис и правила.
- •Объединения: создание простого объединения. Использование enum.
- •41. Объекты стандартного предопределенного потокового ввода-вывода cin, cout, cerr, clog.
- •Объявление переменных указателей. Простые операторы с указателями.
- •Оператор if. Оператор if-else. Вложенные операторы if-else. Оператор if-else-if.
- •If (условие_истинно) оператор; else оператор;
- •If (условие_истинно)
- •Операторы динамического распределения памяти (new, delete).
- •Операции динамического распределения памяти.
- •Операции отношения и логические операции. Условная операция. Операции сравнения (Операции отношений)
- •Логические операции.
- •Операция присваивания. Приоритет операций.
- •Определение первичного класса.
- •Определение переменных указателей. Инициализация указателей.
- •Организация списка объектов различного типа. Техническая реализация
- •Параметризованная очередь. Параметризованный стек. Параметризованное бинарное дерево.
- •Int max_len; /* Максимальная длина стека */
- •Int top; /* Индекс элемента в вершине стека */
- •Параметризованный класс двухсвязного списка.
- •58. Перегрузка операций
- •59. Перегрузка для труктур
- •Передача значений параметров по умолчанию. Передача параметров по ссылке и ссылочные переменные.
- •Передача параметра по ссылке
- •Передача структур в функции. Создание массива структур.
- •63. Подставляемые функции (inline-функции).
- •Преобразования указателей на объекты
- •65. Приведите пример использования enum.
- •66. Приведите пример использования inline-функции.
- •67. Приведите пример использования аргументов функций по умолчанию.
- •68. Приведите пример использования арифметических операции с указателями.
- •69. Приведите пример использования виртуальных функций
- •70. Приведите пример использования вызова функций по значению и вызов по ссылке.
- •71. Приведите пример использования дружественных функции.
- •72. Приведите пример использования конструкторов и деструктора.
- •73.Приведите пример использования массива структур.
- •Приведите пример использования перегрузки функций.
- •81. Приведите пример использования указателей и массивов.
- •82. Приведите пример использования условного оператора
- •83.Приведите пример использования циклов for, while, do-while.
- •84. Приведите пример использования шаблонов функций.
- •Принципы организации позднего связывания.
- •Приоритет переменных с файловой и локальной областями действия. Операция уточнения области действия.
- •Производные классы. Доступ к полям и функциям базового класса.
- •88. Простой класс. Вложенные классы
- •Пространство имен. Операторы namespace и using. Пространство имен
- •Прототипы функций. Вызов функций по значению и вызов по ссылке. Область действия. Рекурсия.
- •91.Работа с файлами последовательного и произвольного доступа.
- •92.92.Переменные
- •Где объявляются переменные
- •Локальные переменные
- •Вопрос 95
- •96 Соглашения об именах
- •Тело класса и составные функции.
- •Указатели на массивы. Указатели на строки.
- •Использование указателя на символьную строку
- •Условный оператор. Оператор switch.
- •Формальные и фактические параметры. Массивы в качестве параметров. Аргумент типа void.
- •Способ передачи параметров в подпрограмму
- •110.Циклы for. Циклы while. Циклы do-while. Разница между циклами.
- •Цикл while ("пока") с постусловием
Параметризованная очередь. Параметризованный стек. Параметризованное бинарное дерево.
По аналогии с параметризованной функцией можно построить параметризованное описание класса, позволяющее создавать экземпляры классов для конкретных значений параметров. Параметризованный класс описывается следующим образом:
template <class T >
class описание класса
Как и для функций, в описателе template может быть задано несколько параметров. В самом описание класса имена параметров используются как имена типов данных, типов параметров функций и типов значений, возвращаемых функциями.
В качестве примера приведем описание класса stack, предназначенного для построения стеков фиксированного максимального размера с элементами произволного типа.
enum BOOLEAN ( FALSE, TRUE );
template <class Type >
class stack
{ private:
enum ( EMPTY = -1 );
Type* s; /* Указатель на массив стека */
Int max_len; /* Максимальная длина стека */
Int top; /* Индекс элемента в вершине стека */
public:
stack ( ) : max_len ( 100 ) /* конструктор без параметров */
{ s = new Type [ 100 ]; top = EMPTY; }
stack ( int size ) : max_len( size ) /* Второй конструктор */
{ s = new Type [ size ]; top = EMPTY; }
~stack ( ) { delete [ ] s; } /* Деструктор */
void reset ( ) { top = EMPTY; } /* Очистить стек */
void push ( Type c ) { s [ ++top ] = c; }
Type pop ( ) { return (s [top—] }
Type top_of ( ) { return ( s [top ] }
BOOLEAN empty ( ) { return BOOLEAN ( top == EMPTY ) }
BOOLEAN full ( ) { return BOOLEAN ( top == max_len ) }
};
Следует отметить, что в этом примере с целью сокращения исходного текста не предусмотрен контроль выхода за пределы стека в методах push и pop.
Чтобы создать экземпляр параметризованного объектного типа, нужно уточнить имя типа значением параметра в угловых скобках:
Бинарное дерево_биинарным деревом называется конечное множетсво узлов,которое или пусто, или состоит из корня и двух непересакающихся бинарных деревьев,называющихся левым и правым поддеревьями данного дерева.
template<class DataT> class tree
{
DataT info;
tree *llink;//ссылка на «левую» ветвь
tree *rlink;//ссылка на «правую» ветвь
public:
tree *root; // корень дерева
tree(){root=NULL;}; // конструктор
void in(tree<DataT> *&t); // ввод дерева
void btree1(tree<DataT> *t);
void btree2(tree<DataT> *t);
void btree3(tree<DataT>*t);
далее также реализуем ввод дерева,и обход, в обратном,концевом и прямых порядках.
Обход в прямом порядке – попасть в корень, пройти левое поддерево в прямом порядке.пройти правое поддерево в прямом порядке.
Обход в обратном порядке: пройти левое поддерево в обратном порядке, попасть в корень , и пройти правое поддерево в обратном порядке.
Обход в концевом порядке- пройти левое поддерево в концевом порядке, пройти правое поддерево в концевом порядке, попасть в корень.
Обходы бинарного дерева с рисунка.
1)в прямом порядке ABDCEGFHJ
2)в обратном DBAGECHFJ
3)в концевом DBGEHJFCA
Очередь – абстрактная структура данных, реализует принцип обслуживания FIFO. Это частный случай однонаправленного списка, добавление элементов в который выполняется в один конец, а выборка идет из другого конца. Таким образом, в структуре «очередь» определены две операции: добавление элементов и выборка. При выборке элемент из очереди исключается. В системном программировании очереди используются для диспетчеризации задач моделирования.
«первым пришел,первым ушел»
Необходимо, чтобы наш класс Queue поддерживал следующие операции:
1. добавить элемент в конец очереди: void add( item );
2. удалить элемент из начала очереди: item remove();
3. определить, пуста ли очередь: bool is_empty();
4. определить, заполнена ли очередь: bool is_full();
// объявление QueueItem
template <class T> class QueueItem;
template <class Type>
class Queue {
public:
Queue() : front( 0 ), back ( 0 ) { }
~Queue();
Type& remove();
void add( const Type & );
bool is_empty() const {
return front == 0;
}
private: QueueItem<Type> *front;
QueueItem<Type> *back;
};
#endif