
- •1 Алгоритмы арифметики
- •1.1 Проблемы целочисленной арифметики
- •1.2 Проблемы плавающего формата
- •1.3 Пользовательская арифметика
- •1.4 Алгоритмические проблемы
- •1.5 Функция Аккермана
- •1.6 Некоторые примеры решения сложных вычислительных задач
- •2 Обработка матриц
- •2.1 Динамическое распределение для матрицы целых чисел
- •2.2 Обработка матриц строк символов
- •2.3 Механизм матрицы как контейнера
- •3 Обработка строка символов
- •3.1 Способы представления строк символов
- •3.2 Алгоритмы обработки
- •4 Обработка линейных списков
- •4.2 Линейный двухсвязный список для хранения строк символов
- •4.3 Понятие контейнера
- •4.4 Специальные списки: cтек, очередь, дек
- •4.5 Достоинства и недостатки списков
- •5 Ввод и редактирования текстовых объектов
- •Введение
- •5.1 Редактор строки
- •5.2 Редактор матрицы
- •6 Файлы, библиотеки, базы данных
- •6.1 Общие сведения о файловой системе
- •6.2 Файловая библиотека stdio.h
- •6.3 Текстовые файлы
- •6.4 Двоичные файлы
- •6.5 Библиотеки
- •6.6 Базы данных
- •6.6.1 Общие сведения о базах данных
- •6.6.2 Библиотека файловых функций io.h
- •6.6.3 Физическая организация файла данных
- •6.6.4 Основные функции для работы с файлом данных
- •6.6.5 Индексные файлы
- •7 Деревья, древовидные списки
- •7.1 Основные понятия и определения
- •7.2 Представление деревьев
- •7.2.1 Представление дерева в виде древовидного списка
- •7.2.2 Механизм конструирования деревьев на основе строки формата
- •7.3 Использование кода Дьюи в древовидных списках
- •8 Деревья И/ИЛИ
- •8.1 Основные понятия
- •8.2 Алгоритм подсчета вариантов
- •8.3 Алгоритм нумерации вариантов
- •8.4 Программная реализация
- •9 Трансляторы, интерпретаторы, ассемблеры, виртуальные машины, дизассемблеры и отладчики
- •9.1 Основные определения
- •9.2 Метод рекурсивного спуска
- •9.3 Реализация интерпретатора арифметических выражений
- •9.3.2 Использование стека для выполнения арифметических операций
- •9.3.3 Вспомогательные функции
- •9.3.4 Реализация метода рекурсивного спуска
- •9.4 Интерпретатор простого языка программирования
- •9.4.1 Описание простого алгоритмического языка
- •9.4.2 Реализация интерпретатора
- •9.5 Компилятор усеченного языка программирования Си
- •9.6 Виртуальные машины
- •9.6.1 Основные понятия
- •9.6.2 Простая виртуальная машина
- •9.6.3 Реализация простой виртуальной машины
- •9.7 Система — виртуальная машина + транслятор
- •9.7.1 Эволюция программных систем
- •9.7.2 Описание языка
- •9.7.3 Стековая виртуальная машина
- •9.7.4 Транслятор для стековой виртуальной машины
- •Литература
77
case '8': printf("FindName>"); gets(str);
if(FindName(&b,str,&r)==1) PrintRecord(&r); else printf("Name %s don't find\n",str);
break;
case 27: CloseBase(&b); return; //esc
}
}
}
7 ДЕРЕВЬЯ, ДРЕВОВИДНЫЕ СПИСКИ
7.1 Основные понятия и определения
Деревья являются удобным способом представления информации. Поэтому в программировании они играют огромную роль. Вместе с тем можно выделить два наиболее важных направления:
1)использование деревьев для представления информации, например древовидная структура каталогов, древовидная структура некоторой фир мы (директорподразделенияотделыработкники), иерархические класси фикации и т.д.;
2)использование деревьев для организации эффективного поиска ин формации (двоичные деревья, АВЛдеревья, Bдеревья и т.д.).
Дадим ряд определений.
Деревом будем называть ациклический ориентированный граф G, об ладающий следующими свойствами:
1) имеется узел r, у которого нет входных дуг, назовем его корнем де
рева;
2) все узлы, кроме корня, имеют одну входную дугу и несколько вы ходных дуг (выходные дуги могут отсутствовать).
Узел, у которого нет выходных дуг, назовем листом.