- •Понятие сложности алгоритма, оценки времени исполнения.
- •Общая классификация вычислительных алгоритмов.
- •Точность представления чисел.
- •Вычисление «машинного нуля».
- •Понятие стека. Операции над стеком.
- •Программная реализация стека на основе статического массива.
- •Использование стека при организации связи функций в языке Си и в ос.
- •Понятие очереди. Операции над очередями.
- •Кольцевая очередь. Деки.
- •Программная реализация очереди на основе статического массива.
- •Структура данных «список».
- •Ссылки.
- •Линейные списки – основные операции.
- •Реализ списков на основе динам стру.
- •Двусвязный список и его программная реализация.
- •Кольцевые списки.
- •Многосвязные (слоеные) списки.
- •Бинарный поиск.
- •Алгоритм прямого поиска.
- •Алгоритм Кнута-Мориса-Пратта.
- •Алгоритм Боуера-Мура.
- •Сортировки – общая классификация.
- •Сортировка с помощью включения.
- •Сортировка с помощью выделения
- •Сортировка с помощью обменов
- •Шейкерная сортировка
- •Сортировка Шелла
- •Сравнение рассмотренных сортировок
- •Пирамидальная сортировка
- •Быстрая сортировка.
- •Сортировка слиянием
- •Графы – основные понятия.
- •Формы представления графов. Матрица смежности
- •Матрица инцидентности
- •Списки смежности
- •Массив дуг
- •Достижимость и обходы графа
- •Алгоритм Дейкстры
- •[30, 1] Постоянная
- •[40, 3] Постоянная
- •Вычисление выражений по их символьному представлению.
- •Построение обратной польской записи выражения.
Понятие стека. Операции над стеком.
Стек – это последовательный список переменной длины, включение и исключение элементов из которого выполняется только с одной стороны(вершины) (FILO).
Операции:
- включение нового элемента
- исключение элемента
- определение текущего числа эл-ов в стеке
- очистка стека
- неразрушающее чтение из вершины стека
Реализация стека может быть выполнена на основе массива, кроме массива необходимо иметь переменную(указатель стека), адресующую вершину стека.
Вершине стека соответствует первый свободный элемент и стек растет в сторону увеличения адреса.
Программная реализация стека на основе статического массива.
При представлении стека в статической памяти для стека выделяется память, как для вектора. В дескрипторе этого вектора кроме обычных для вектора параметров должен находиться также указатель стека - адрес вершины стека. Указатель стека может указывать либо на первый свободный элемент стека, либо на последний записанный в стек элемент. При занесении элемента в стек элемент записывается на место, определяемое указателем стека, затем указатель модифицируется таким образом, чтобы он указывал на следующий свободный элемент (если указатель указывает на последний записанный элемент, то сначала модифицируется указатель, а затем производится запись элемента). Модификация указателя состоит в прибавлении к нему или в вычитании из него единицы . Операция очистки стека сводится к записи в указатель стека начального значения - адреса начала выделенной области памяти. Определение размера стека сводится к вычислению разности указателей: указателя стека и адреса начала области. Указатель стека всегда указывает на первый свободный элемент.
На уровне машинных команд существуют функции push и pop, в основе организации исполняемой среды один из 4 базовых регистров называется стековым и работает по стековому принципу, поэтому стек является основной структурой, используемой при организации компьютерных процессов.
Использование стека при организации связи функций в языке Си и в ос.
Понятие очереди. Операции над очередями.
Очередь – последовательный список переменный длины, в котором включение элементов выполняется только с одной стороны(хвост, конец), а исключение с другой стороны(голова, начало) (FIFO).
Очередь элементов может быть реализована с использованием массивов, связного списка или другим способом.
Добавление всегда происходит в конец очереди. Последний элемент помечается особым образом, например поле указателя на следующий элемент равно NULL. Рекомендуется при работе с очередью использовать два указателя: один – на начало очереди, а второй – на ее конец.
Операции: включение, исключение, определение размера, очистка,
неразрушающее чтение.
Кольцевая очередь. Деки.
Со временем указатель наконец достигнет верхней границы, однако, если опции включения чередовались с опциями исключения, то в начальной части окажется свободное место, для того чтобы эти места могли быть повторно использованы, очередь замыкается в кольцо: указатели (на начало и конец), достигнув конца выделенной памяти переключаются на ее начало – кольцевая очередь.
Дек - особый вид очереди. Дек - это такой последовательный список, в котором как включение, так и исключение элементов может осуществляться с любого из двух концов списка. Частный случай дека - дек с ограниченным входом и дек с ограниченным выходом. Логическая и физическая структуры дека аналогичны логической и физической структуре кольцевой FIFO-очереди.
Операции над деком:
включение элемента справа;
включение элемента слева;
исключение элемента справа;
исключение элемента слева;
определение размера;
очистка.
