mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Add a complete example to tsearch(3)
Reviewed by: wblock, sevan, bruffer MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D11053
This commit is contained in:
parent
683b025ade
commit
d29193055b
1 changed files with 59 additions and 1 deletions
|
|
@ -27,7 +27,7 @@
|
|||
.\" OpenBSD: tsearch.3,v 1.2 1998/06/21 22:13:49 millert Exp
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd October 9, 2016
|
||||
.Dd June 4, 2017
|
||||
.Dt TSEARCH 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
|
@ -130,6 +130,64 @@ is NULL or the datum cannot be found.
|
|||
The
|
||||
.Fn twalk
|
||||
function returns no value.
|
||||
.Sh EXAMPLES
|
||||
This example uses
|
||||
.Fn tsearch
|
||||
to search for four strings in
|
||||
.Dv root .
|
||||
Because the strings are not already present, they are added.
|
||||
.Fn tsearch
|
||||
is called twice on the fourth string to demonstrate that a string is not added when it is already present.
|
||||
.Fn tfind
|
||||
is used to find the single instance of the fourth string, and
|
||||
.Fn tdelete
|
||||
removes it.
|
||||
Finally,
|
||||
.Fn twalk
|
||||
is used to return and display the resulting binary search tree.
|
||||
.Bd -literal
|
||||
#include <stdio.h>
|
||||
#include <search.h>
|
||||
#include <string.h>
|
||||
|
||||
int
|
||||
comp(const void *a, const void *b)
|
||||
{
|
||||
|
||||
return strcmp(a, b);
|
||||
}
|
||||
|
||||
void
|
||||
printwalk(const posix_tnode * node, VISIT v, int __unused0)
|
||||
{
|
||||
|
||||
if (v == postorder || v == leaf) {
|
||||
printf("node: %s\n\\", *(char **)node);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
posix_tnode *root = NULL;
|
||||
|
||||
char one[] = "blah1";
|
||||
char two[] = "blah-2";
|
||||
char three[] = "blah-3";
|
||||
char four[] = "blah-4";
|
||||
|
||||
tsearch(one, &root, comp);
|
||||
tsearch(two, &root, comp);
|
||||
tsearch(three, &root, comp);
|
||||
tsearch(four, &root, comp);
|
||||
tsearch(four, &root, comp);
|
||||
printf("four: %s\n", *(char **)tfind(four, &root, comp));
|
||||
tdelete(four, &root, comp);
|
||||
|
||||
twalk(root, printwalk);
|
||||
return 0;
|
||||
}
|
||||
.Ed
|
||||
.Sh SEE ALSO
|
||||
.Xr bsearch 3 ,
|
||||
.Xr hsearch 3 ,
|
||||
|
|
|
|||
Loading…
Reference in a new issue