중화사전망 - 서예자전 - C 프로그래밍을 사용하여 해시 테이블 설계

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 을 반환합니다

}