중화사전망 - 서예자전 - C 프로그래밍을 사용하여 해시 테이블 설계
C 프로그래밍을 사용하여 해시 테이블 설계
# include & ltiostream & gt
# include & lt 문자열>
네임스페이스 STD 사용
# M 47 // 난수 정의
# n 50//해시 테이블 길이 정의
# 질문 30 // 인원 정의
구조물 이름 {
Char * py
Int k;;
}
이름 이름 목록
구조 해시 {
Char * py
Int k;;
Int si
}
해시 해시 목록 [n];
Void listname ()
{
Char * f;;
Int s0, r, I;
이름 목록 [0]. Py=' 해보';
이름 목록 [1]. Py = "chengaoyang
명단 [2]. Py= "진광충";
명단 [3]. Py= "첸 리앙";
명단 [4]. Py= "진영주";
명단 [5]. Py= "풍소";
명단 [6]. Py= "창 xiangfeng";
명단 [7]. Py = "huting
명단 [8]. Py= "옐로우 골드";
명단 [9]. Py= "강소가";
명단 [10]. Py = "laidongjie
목록 [1 1]. Py = "liyexiao
명단 [12]. Py= "이도회";
명단 [13]. Py= "이연";
명단 [14]. Py = "lizhuoqun
명단 [15]. Py = "linfujun
명단 [16]. Py= "로빈";
명단 [17]. Py= "로크청";
명단 [18]. Py= "니켈 슈퍼";
명단 [19]. Py= "판화봉";
명단 [20]. Py = "sijun
이름 목록 [2 1]. Py= "송전휘";
명단 [22]. Py= "손정청";
명단 [23]. Py= "왕호봉";
명단 [24]. Py = "wangjunshuai
명단 [25]. Py= "왕진덕";
명단 [26]. Py= "왕택군";
명단 [27]. Py= "왕코코";
명단 [28]. Py= "위성";
명단 [29]. Py = "wurenke
For(I = 0;; 나 & ltq;; I++)
{
S0 = 0;;
F = 이름 목록 [i]. Py;
For(r = 0;; *(f+r)! ='\0'; R++)
S0+= * (f+r);
명단 [i]. K = s0
}
}
Void creathash ()
{
Int I;;
For(I = 0;; 나 & ltn;; I++)
{
해시 목록 [I]. Py =
해시 목록 [I]. K = 0;;
해시 목록 [I]. Si = 0;;
}
For(I = 0;; 나 & ltm;; I++)
{
Intsum = 0;
Int adr=(NameList[i]. K)% m;
Int d = ADR
If (해시 목록 [ADR]. si = = 0)
{
해시 목록 [ADR]. K = 이름 목록 [i]. K;
해시 목록 [ADR]. Py=NameList[i]. Py;
해시 목록 [ADR]. Si =1;
}
기타
{
While (해시 목록 [d]. k! =0)
{
D =(d+ 이름 목록 [i]. K%10+1)% m;
Sum = sum+1;
}
해시 목록 [d]. K = 이름 목록 [i]. K;
해시 목록 [d]. Py=NameList[i]. Py;
해시 목록 [d]. Si = 합계+1;
}
}
}
Void findlist ()
{
문자열 Nam
Int s0=0, r, sum =1;
Cout & lt& lt "당신의 이름의 병음을 입력하십시오:"
CIN>;; & gt 비동맹 운동;
For(r = 0;; R & lt20; R++)
S0+= Nam [r];
Intadr = s0% m;
Int d = ADR
If (해시 목록 [ADR]. k = = s0)
Cout & lt& lt "이름:"
Elseif (해시 목록 [ADR]. k = = 0)
Cout & lt& lt "이런 기록은 없습니다!" & lt& ltendl
기타
{
Int g = 0;;
While(g==0)
{
D = (d+s0%10+1)% m;
Sum = sum+1;
If (해시 목록 [d]. k = = 0)
{cout & lt& lt "그런 기록이 없습니다!" & lt& ltendl
G =1;
}
If (해시 목록 [d]. k = = s0)
{
Cout & lt& lt "이름:"
G =1;
}
}
}
}
빈 디스플레이 ()
{
Int I;;
For(I = 0;; 나 & lt30; I++)
Cout & lt& lt 목록 [i]. Py<& lt" ""<& lt 목록 [i]. K<& ltendl
}
Int main ()
{
Char x;;
Listname ();
Creathash ();
Cout & lt& lt 해시 테이블 표시 F. 임의의 키를 찾아 종료하십시오. 선택하십시오.
그리고 (CIN>;; & gtx)
{
If (x = =' d') {display (); Cout & lt& ltendl}
Elseif (x = =' f') {findlist (); Cout & lt& ltendl}
Else break
}
0 을 반환합니다
}