📄 tfind.c
字号:
#if !defined(lint) && defined(SCCSIDS)static char sccsid[] = "@(#)tfind.c 1.1 92/07/30 SMI"; /* from S5R2 1.2 */#endif/*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 */NODE *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 (NULL); while (*rootp != NULL) { /* T1: */ int r = (*compar)(key, (*rootp)->key); /* T2: */ if (r == 0) return (*rootp); /* Key found */ rootp = (r < 0) ? &(*rootp)->llink : /* T3: Take left branch */ &(*rootp)->rlink; /* T4: Take right branch */ } return (NODE *)(NULL);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -