데이터 구조 및 알고리즘 클래스의 해시 테이블에 대해 배우고 있으며 별도의 연결을 이해하는 데 어려움을 겪고 있습니다.해시 테이블 및 분리 된 연결 : 버킷 목록에서 반환 할 값을 어떻게 알 수 있습니까?
나는 각 버킷에 키 - 값 쌍이 들어있는 노드에 대한 포인터가 있으며, 각 노드에는 현재 버킷의 미니 링크 된 목록에있는 다음 (잠재적 인) 노드에 대한 포인터가 들어 있습니다. 이것은 주로 충돌을 처리하는 데 사용됩니다.
이제 단순성을 위해 해시 테이블에 5 개의 버킷이 있다고 가정합니다. 적절한 해시 테이블 인스턴스를 만든 후 내 메인에 다음 코드 줄을 작성했다고 가정합니다.
myHashTable["rick"] = "Rick Sanchez";
myHashTable["morty"] = "Morty Smith";
이의 두 문자열 키
rick
및
morty
에 대해 동일한 버킷 인덱스를 생성하는 일이 어떤 해싱 우리가 너무 사용하는 기능을 가정 해 봅시다. 단순화를 위해 버킷 인덱스가 인덱스 0이라고 가정 해 봅시다.
우리 해시 테이블의 인덱스 0에서 우리는 두 번째 노드에 넣기로 결정한 순서대로 Rick Sanchez
과 Morty Smith
의 값을 갖는 두 개의 노드를 갖습니다.
내가 여기에 우리의 코드 당 Rick Sanchez
입니다 rick
에 해당하는 값을 표시하려면, 어떻게 반환 할 필요가있는 노드로 결정 0
의 버킷 인덱스를 생성합니다 해싱 함수? 키가 rick
과 일치 할 때까지 노드를 반복합니까?
* "나는 누구의 주요 경기 릭을을 찾을 때까지 노드를 통해 I 루프를합니까?"* - 예, 그건 해시 맵 조회는 O (n)을의 이유 최악의 경우, 모든 키의 해시가 충돌합니다. – jonrsharpe
@jonrsharpe 대단히 감사합니다! – Student