Книга: Linux программирование в примерах
14.4.2. Функции управления деревьями
14.4.2. Функции управления деревьями
Только что описанные операции соответствуют следующим функциям:
#include <search.h> /* XSI */
void *tsearch(const void *key, void **rootp,
int (*compare)(const void*, const void*));
void *tfind(const void *key, const void **rootp,
int (*compare)(const void*, const void*));
void *tdelete(const void *key, void **rootp,
int (*compare)(const void*, const void*));
typedef enum { preorder, postorder, endorder, leaf } VISIT;
void twalk(const void *root,
void (*action)(const void *nodep, const VISIT which,
const int depth));
void tdestroy(void *root, void (*free_node)(void *nodep)); /* GLIBC*/
Эти функции были впервые определены для System V, а теперь формально стандартизованы POSIX. Они следуют структуре других, которые мы видели в разделе 6.2 «Функции сортировки и поиска»: использование указателей void*
для указания на произвольные типы данных и предоставляемые пользователем функции сравнения для определения порядка. Как и для qsort()
и bsearch()
, функции сравнения должны возвращать отрицательное/нулевое/положительное значение, когда key
сравнивается со значением в вершине дерева.
- 14.4.1. Введение в двоичные деревья
- 14.4.2. Функции управления деревьями
- 14.4.3. Ввод элемента в дерево: tsearch()
- 14.4.4. Поиск по дереву и использование возвращенного указателя: tfind() и tsearch()
- 14.4.5. Обход дерева: twalk()
- 14.4.6. Удаление вершины дерева и удаление дерева: tdelete() и tdestroy()
- 6.2. Функции сортировки и поиска
- Основные "рычаги" управления производительностью
- Категорийный менеджмент. Курс управления ассортиментом в рознице
- Аргументы функции в Python
- 3. Функции
- Новые функции API для работы с Blob и массивами
- 1. Системы управления базами данных
- 4.8 Методы управления Fibre Channel
- Математические функции
- 7.9 Будущее управления хранилищами по версии ассоциации SNIA: стандарты SMI
- 15.1.3. Обработка сигналов управления заданиями
- Группа управления конфигурацией ПО