Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

단일 연결 목록으로 해시 테이블을 구현하는 C++ 프로그램

<시간/>

해시 테이블은 키-값 쌍을 저장하는 데 사용되는 데이터 구조입니다. 해시 함수는 해시 테이블에서 요소를 삽입하거나 검색할 배열의 인덱스를 계산하는 데 사용됩니다.

이것은 단일 연결 리스트로 해시 테이블을 구현하는 C++ 프로그램입니다.

알고리즘

삽입용:

시작 선언 함수 Insert(int k, int v) int hash_v =HashFunc(k) HashTableEntry* p =NULL HashTableEntry* en =ht[hash_v] while (en!=NULL) p =en en=en->n if (en ==NULL) en =new HashTableEntry(k, v) if (p ==NULL) ht[hash_v] =en else p->n=en else en->v =vEnd.

삭제:

Begin Declare Function Remove(int k) int hash_v =HashFunc(k) HashTableEntry* en =ht[hash_v] HashTableEntry* p=NULL if (en ==NULL or en->k !=k) Print “No Element 키에서 찾았습니다” return while (en->n !=NULL) p =en en =en->n if (p !=NULL) p->n =en->n delete en Print “Element Deleted”End. 

검색의 경우 키 값:

Begin Declare function SearchKey(int k) int hash_v =HashFunc(k) bool flag =false HashTableEntry* en =ht[hash_v] if (en !=NULL) while (en !=NULL) if (en->k ==k) flag =true if (flag) "Element found at key" 인쇄 en->v en =en->n if (!flag) "No Element found at key"를 인쇄 End.

예시 코드

#include const int T_S =200; 네임스페이스 사용 std;struct HashTableEntry { int v, k; 해시 테이블 항목 *n; 해시 테이블 항목 *p; HashTableEntry(int k, int v) { this->k =k; 이것->v =v; 이것->n =NULL; }};클래스 HashMapTable { 공개:HashTableEntry **ht, **top; HashMapTable() { ht =새로운 HashTableEntry*[T_S]; for (int i =0; i n; } if (en ==NULL) { en =new HashTableEntry(k, v); if (p ==NULL) { ht[hash_v] =en; } else { p->n =엔; } } else { en->v =v; } } 무효 제거(int k) { int hash_v =HashFunc(k); HashTableEntry* en =ht[hash_v]; HashTableEntry* p =NULL; if (en ==NULL || en->k !=k) { cout<<"키에 요소가 없습니다. "<n !=NULL) { p =en; 엔 =엔->n; } if (p !=NULL) { p->n =en->n; } 삭제 ko; cout<<"요소 삭제"<k ==k) { 플래그 =true; } if (flag) { cout<<"키 "<v<n; } } if (!flag) cout<<"키에 요소가 없습니다. "<>c; switch(c) { case 1:cout<<"삽입할 요소를 입력하세요:"; 신>>v; cout<<"삽입할 요소를 입력하십시오:"; cin>>k; 해시.삽입(k, v); 부서지다; case 2:cout<<"검색할 요소의 키를 입력하세요:"; cin>>k; 해시.검색키(k); 부서지다; case 3:cout<<"삭제할 요소의 키를 입력하세요:"; cin>>k; 해시.제거(k); 부서지다; 사례 4:exit(1); 기본값:cout<<"\n올바른 옵션을 입력하세요\n"; } } 반환 0;}

출력

1.테이블에 요소 삽입2.키에서 요소 검색3.키에서 요소 삭제4.종료 선택:1삽입할 요소 입력:2삽입할 요소 키 입력:11.테이블에 요소 삽입2. key3.Delete element at a key4.ExitEnter your choice:1Enter element to insert:3Enter key at which element to insert:41.Insert element into the table2.Search element from a key3.Delete element at a key4 .Exit선택 사항을 입력하십시오:1삽입할 요소를 입력하십시오:7삽입할 요소에 키를 입력하십시오:61.테이블에 요소를 삽입하십시오2.키에서 요소를 검색하십시오.3.키에서 요소를 삭제하십시오. 8삽입할 요소의 키를 입력하십시오. key3.Delete 요소에서 table2.Search 요소에 요소 삽입 키에서 엔터 삭제할 요소:9Element Deleted1.Insert element to the table2.Search element from the key3.Delete element at a key4.ExitEnter your choice:4