File: hsearch.3

package info (click to toggle)
manpages-pt 20040726-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,988 kB
  • sloc: sh: 45; makefile: 16
file content (111 lines) | stat: -rw-r--r-- 3,766 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
.TH HSEARCH 3
.SH NOME
hcreate, hdestroy, hsearch \- gerencimento de tabela de 'hash'

.SH SINOPSE
.nf
.B #include  <search.h>
.sp
.BI "ENTRY *hsearch(ENTRY " item ", ACTION " action ");"
.sp
.BI "int hcreate(unsigned "nel ");"
.sp
.B "void hdestroy(void);"
.RE
.fi
.SH DESCRIO
Essas trs funes permitem que o usurio crie uma tabela de hash, a qual associa uma chave com quaisquer dados.
.PP
Primeiro, a tabela precisa ser criada com a funo \fBhcreate()\fP.
\fInel\fP  uma uma esimativa do nmero de entradas na tabela.
\fBhcreate()\fP pode ajustar esse valor para maior a fim de melhorar o
desempenho da tabela de hash resultante. A imnplementao GNU de
\fBhsearch()\fP ir, tambm, aumnetar a tabela se a mesma ficar
praticamente cheia.
\fBmalloc\fP(3)  utilizado para alocar espao para a tabela.
.PP
A funo correspondente \fBhdestroy()\fP libera a memria ocupada pela
tabela de hash para que uma nova tabela possa ser construda.
.PP
\fIitem\fP  do tipo \fBENTRY\fP, a qual  um 'typedef' definido em
\fI<search.h>\fP e inclui estes elementos:
.sp
.nf
	typedef struct entry
	  {
	    char *\fIkey\fP;
	    char *\fIdata\fP;
	  } ENTRY;
.fi
.sp
\fIkey\fP aponta para a string ASCII terminada em zero, a qual  uma
chave de busca. \fIdata\fP aponta para os dados associados quela chave.
(um apontador para um tipo diferente de caracter deve ser substitudo por
um ponteiro-para-caracter ("pointer-to-character").) \fBhserach\fP
procura na tabela de hash um item com a mesma chave que \fIitem\fP e se
for bem sucedido, retornar um apontador para ele. \fIaction\fP determina
o que \fBhsearch()\fP far aps uma busca infrutfera. Um valor de \fBFIND\fP o instrui a inserir o novo
item, enquanto um valor de  \fBFIND\fP significa retornar \fBNULL\fP.
.SH "VALOR DE RETURN"
\fBhcreate()\fP retorna \fBNULL\fP se a tabela de hash no puder ser instalada com sucesso.
.PP
\fBhsearch()\fP retorna \fBNULL\fP se \fIaction\fP  \fBENTER\fP e no h memria suficiente para
expandir a tabela hash, ou \fIaction\fP  \fBFIND\fP e \fBitem\fP no puser ser encontrado na tabela de
hash.
.SH "EM CONFORMIDADE COM"
.TP
SVID, exceto em SysV, a tabela de hash no pode crescer.
.SH BUGS
A implementao s consegue gerenciar uma tabela hash por vez.
Entradas de tabela de hash individuais podem ser acrescidas, mas no apagadas.
.SH EXEMPLO
.PP
O seguinte programa insere 24 itens em uma tabela de hash e ento imnprime alguns deles.
.nf

	#include <stdio.h>
	#include <search.h>

	char *data[]={ "alpha", "bravo", "charlie", "delta",
	     "echo", "foxtrot", "golf", "hotel", "india", "julliete",
	     "kilo", "lima", "mike", "november", "oscar", "papa", 
	     "quebec", "romeo", "sierra", "tango", "uniform", 
	     "victor, "whiskey", "x-ray", "yankee", "zulu"
	 };

	int main()
	{
	  ENTRY e, *ep;
	  int i;

	  /* inicia com uma tabela pequena e permite-lhe crescer */
	  hcreate(3);
	  for (i = 0; i < 24; i++)
	    {
	      e.key = data[i];
	      /* data  apenas um inteiro, ao invs de um ponteiro para algo */
	      e.data = (char *)i;
	      ep = hsearch(e, ENTER);
	      /* no deve haver falhas */
	      if(ep == NULL) {fprintf(stderr, "entry failed\\n"); exit(1);}
	    }
	  for (i = 22; i < 26; i++)
	    /* imprime duas entradas vindas da tabela e mostra
	       as duas que no esto na tabela */
	    {
	      e.key = data[i];
	      ep = hsearch(e, FIND);
	      printf("%9.9s -> %9.9s:%d\\n, e.key, ep?ep->key:"NULL",
		     ep?(int)(ep->data):0);
	    }
	  return0;
	}

.fi
.SH "VEJA TAMBM"
.BR bsearch "(3), " lsearch "(3), " tsearch "(3), " malloc "(3)"

.SH "TRADUZIDO PELO LDP-BR EM 18.8.2000"
\&\fR\&\f(CWValter 'Geddy' Ferraz Sanches <geddy@lawyer.com> (traduo)\fR
.fi
\&\fR\&\f(CWRevisor <revisor@revisolandia.com> (reviso)\fR