lsearch() Linear Search for Key; Add Key If Not Found
#include <search.h>
char *lsearch(key,base,num,width,compare);
char *key; Search key
char *base; Pointer to base of search data
unsigned *num, width; Number and width of elements
int (*compare)(); Pointer to compare function
lsearch() performs a linear search of a table of information.
(Compare this to bsearch(), which performs a binary search.) The
table is an array of '*num' elements, each element being 'width' in
size. 'base' is a pointer to the base of the array to be searched,
and 'key' is the item being sought. 'compare' points to a
user-supplied routine that compares two elements and returns a value
based on the comparison. 'compare' returns one of the following
values:
0 'element1' is identical to 'element2'
not 0 'element1' and 'element2' are different
Returns: A pointer to the first occurrence of 'key' in the array
pointed to by 'base'. NULL is returned if 'key' is not
found, and lsearch() adds key to the end of the list.
(Compare to lfind(), which operates similarly to
lsearch() but does not add key to the end of the list.)
If 'key' is not found, lsearch() adds it to the end of
the array.
Notes: lsearch() will make repeated calls to the 'compare'
routine during the search. On each call to 'compare',
'key' will be compared with one of the elements of
'base'.
lsearch() does not require the array to be sorted (as
bsearch() does).
-------------------------------- Example ---------------------------------
The following statements search an array for a value. If the value
is not found, it is added to the end of the array.
#include <search.h>
#include <stdio.h>
#include <string.h>
int vals[] = {10,95,30,75,54,15,28,88,100};
int num = 10;
int key = 62;
int *found;
int cmp();
main()
{
found = (int *)lsearch(&key,vals,&num,sizeof(int),cmp);
if (found == 0)
printf("%d already in table\n",key);
else
printf("%d added to table",key);
}
int cmp(n1,n2)
int *n1;
int *n2;
{
return(*n1 - *n2);
}
Seealso:
This page last updated on Fri Nov 30 10:48:32 MSK 2001
Copyright © 1992-2001, Vitaly Filatov, Moscow, Russia
Webmaster