tfind.c
来自「<B>Digital的Unix操作系统VAX 4.2源码</B>」· C语言 代码 · 共 36 行
C
36 行
/* @(#)tfind.c 1.2 *//*LINTLIBRARY*//* * Tree search algorithm, generalized from Knuth (6.2.2) Algorithm T. * * The NODE * arguments are declared in the lint files as char *, * because the definition of NODE isn't available to the user. */#include <search.h>typedef char *POINTER;typedef struct node { POINTER key; struct node *llink, *rlink; } NODE;#define NULL 0/* tfind - find a node, or return 0 */void *tfind(key, rootp, compar)POINTER key; /* Key to be located */register NODE **rootp; /* Address of the root of the tree */int (*compar)(); /* Comparison function */{ if (rootp == NULL) return ((void *)NULL); while (*rootp != NULL) { /* T1: */ int r = (*compar)(key, (*rootp)->key); /* T2: */ if (r == 0) return ((void *)*rootp); /* Key found */ rootp = (r < 0) ? &(*rootp)->llink : /* T3: Take left branch */ &(*rootp)->rlink; /* T4: Take right branch */ } return ((void *)NULL);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?