>> 스피커 1 : 이제 드리겠습니다 이 솔루션을 사용해보십시오.
그럼 어떻게 우리를 살펴 보자 구조체의 노드가 같이 표시됩니다.
여기에서, 우리는 우리가해야 할 것입니다 참조 부울 말씀과 구조체 노드 별
아이들은 알파벳 브라켓.
그래서 일단 당신이 궁금 할 것입니다, 왜 알파벳 해시는 27로 정의된다?
글쎄, 우리가 필요 해요 기억 아포스트로피를 처리하는, 그래서 할
그 특별한 다소있을거야 이 프로그램 전반에 걸쳐 케이스.
>> OK, 이제 기억하는 방법 트라이 실제로 작동합니다.
의 우리가 단어의 고양이를 인덱싱하고 있다고 가정 해 봅시다, 그 후에 우리의 트라이의 루트에서,
우리는 아이들 보는거야 배열, 우리는 보는거야
문자에 해당하는 인덱스 C.는 그래서 인덱스 두 가지 일 것입니다.
그래서, 그것이 우리에게 줄 것이다 부여 새 노드, 그리고, 우리는거야
해당 노드에서 작동합니다.
>> 그래서 노드 주어, 우리는 다시 한 번이야 어린이 배열을 볼 줄,
우리는 인덱스 0에 보는거야 고양이에 해당합니다.
그래서 우리는 그 노드에 가서, 해당 노드 주어, 우리는거야
해당 인덱스 보는 T. 그리고 그 노드로 이동,에
마지막으로, 우리는 완전히 보았다 우리의 말 고양이를 통해, 이제 BOOL
단어 여부를 표시하도록되어 이 주어진 단어는 실제로 단어입니다.
>> 그럼 왜 우리는 특별한 경우를 필요합니까?
그럼, 만약 단어 재앙 우리의 사전에 있지만,
단어 고양이 아닌가요?
그래서 단어 고양이가 있는지 찾고 우리의 사전에, 우리는거야
성공적으로 인덱스를 통해보고 C-A-T와 노드에 도달하지만, 그건
재앙이 일어난 때문 C-A-T에서 길에 노드를 만드는 모든
단어의 끝 방법.
그래서 BOOL 단어 여부를 나타내는 데 사용됩니다 이 특정 위치 실제로
단어를 나타냅니다.
>> 좋아, 그래서 지금 우리가 알고있는 무엇을 트라이는 이제 살펴 보자, 같이하는 것입니다
로드 기능에서.
그래서로드는 부울을 반환하는 것입니다 여부를 우리가 성공적으로 나에 대한
실패로드 사전과 이 사전이 될 것입니다
우리는로드 할 것을.
우리가 할거야 그래서 일단 열려 독서하는 사전입니다.
우리는 우리가 실패하지 않았는지 확인해야합니다, 그래서 사전이 아닌 경우
성공적으로 열려, 그것은 반환 아니,이 경우 우리는거야
false를 반환합니다.
그러나 가정 그것이 성공적으로 열, 우리는 실제로 읽을 수 있습니다
사전을 통해.
>> 우리가 갈거야 그래서 일단 하고 싶은 우리는이 가지고있다
전역 변수 루트.
이제 루트 노드 스타가 될 것입니다.
그것은 우리가있어 우리의 트라이의 정상의 반복 할 것.
우리가 원하는거야 그래서 일단 수행은 우리의 뿌리에 대한 메모리를 할당 할 수 있습니다.
>> 우리는 buf는을 사용하는 것을 알 수 기본적으로 동일 기능,
MALLOC 함수를 제외하고는의 무언가를 반환 보장
완전히 제로.
우리의 malloc을 사용하는 경우에, 우리는해야합니다 의 모든 포인터를 이동 우리
노드와 있는지 확인 그들은 모두 널 (null)입니다.
그래서 buf는 우리를 위해 그렇게 할 것이다.
>> 지금, 바로 MALLOC처럼, 우리는 만들 필요가 할당이 사실의 확인
성공.
이 null을 반환하는 경우에, 우리 우리의 사전을 닫을 필요
파일 및 false를 반환합니다.
따라서 할당 된 가정 성공, 우리는 노드를 사용하는 것입니다
반복 커서 스타 우리의 트라이를 통해.
그래서 우리의 루트는 변경하려고 적이 없어요, 그러나 우리는 커서를 사용하는 것입니다
실제로 노드에서 노드로 이동합니다.
>> 좋아요,이 루프에서, 우리는 , 사전 파일을 읽고
그리고 우리는 fgetc를 사용하고 있습니다.
그래서는 fgetc는 하나를 잡아 것입니다 파일에서 문자.
우리는 잡는 계속할 예정 자 우리가 도달하지 않는 동안
파일의 끝, 그래서 거기 우리가 처리하는 두 가지 항목 케이스.
첫 번째, 문자가 아닌 경우 그것은 새로운 있다면 새로운 라인, 그래서 우리는 알고있다
라인, 우리는 할 거니까 새로운 단어로 이동합니다.
하지만, 그것이 새로운 라인이 아니었다 가정 여기, 우리가 알아 내야
인덱스 우리는에 인덱스에가는거야 어린이 배열이
우리는 전에 바라 보았다.
>> 내가 전에 말했듯이 같이, 우리는 필요 특별한 경우 아포스트로피.
우리는 삼항 연산자를 사용하는주의 여기에, 그래서 우리는 읽을거야
이 우리가 읽을 수있는 문자 인 것처럼 아포스트로피는, 우리는거야
알파벳 마이너스에 해당 인덱스를 설정 1, 어떤 인덱스 26이됩니다.
그렇지 않으면, 아포스트로피가 아니었다면, 우리는 인덱스를 설정하는거야
C 마이너스 동일.
그래서 다시 이전 P 세트의 기억, C 마이너스가 우리에게 줄 수 있겠나?
알파벳 C의 위치, 그렇다면 C는 문자 A,이 뜻
우리 지수 제로를 제공합니다.
문자 B의 경우, 줄 것 그래서 우리 인덱스 1합니다.
>> 그래서 이것은 우리에 대한 인덱스를 제공 우리가 원하는 것을 어린이 배열입니다.
이제,이 지수는 현재 null의 경우 어린이 배열, 즉 의미
노드는 현재에서 존재하지 않는 그 경로는, 그래서 우리는 할당해야
그 경로에 대한 노드.
즉, 우리가 여기서 할거야.
그래서 우리는 다시,은 calloc을 사용하는 것입니다 기능을 우리가하지 않아도되도록
모든 포인터를 제로,하고 우리는, 다시, 그 buf는 확인해야
실패하지 않았다.
buf는 실패 않은 경우에, 우리는 필요 모든 언로 닫으 우리
사전 및 false를 반환합니다.
>> 그래서 그 다음, 실패하지 않았다고 가정 이것은 우리에게 새로운 아이를 작성합니다
그리고, 우리는 그 아이로 이동합니다.
우리의 커서가 반복됩니다 그 아이에 이르기까지.
자, 여기가로 시작하는 경우는 null가 아니었다면, 다음 커서가 단지 반복 할 수
실제로하지 않고 그 아이에 이르기까지 아무것도 할당하는 데.
이것은 우리가 처음 일어난 경우입니다 단어 고양이를 할당하고
우리가 할당 갈 때 그 의미 재앙, 우리는 만들 필요가 없습니다
다시 C-A-T에 대한 노드.
그들은 이미 존재합니다.
>> 좋아, 그럼이 그렇지는 무엇인가?
이 C 한 상태이다 C는 새로운 라인이었다 백 슬래시 N,.
이것은 우리가 성공적으로해야 함을 의미 단어를 완료했습니다.
지금, 우리는 무엇을 하시겠습니까 때 우리 성공적으로 단어를 완성?
우리는이 단어 필드를 사용하는 것입니다 우리의 구조체 노드의 내부.
>> 우리는 참으로이 부분을 설정하려면, 그 때문에 이 노드가 나타내는 것을 나타냅니다
성공적인 단어 실제 단어.
지금, 참으로 그 설정합니다.
우리는 점에 우리의 커서를 재설정 할 다시 트라이의 시작.
그리고 마지막으로, 우리의 사전을 증가 우리는 또 다른 단어를 찾을 크기 때문이다.
>> 좋아, 그래서 우리는 일을 계속하는거야 즉,에 의해 문자로 읽기
캐릭터, 새로운 노드를 구축 우리의 트라이와 각 단어에 대한
사전에, 우리는 마침내 C에 도달 할 때까지 우리는 휴식이 경우 EOF를, 동일
파일의 중.
이제 두 가지 경우에서가 우리는 EOF 칠 수도있다.
오류가 발생했을 경우는 우선 이 있다면 파일 읽기, 그래서
오류, 우리는 일반적인 작업을 수행해야 모든 것을 언로드 파일을 닫습니다,
false를 반환합니다.
오류가 없었습니다 가정하면 우리가 실제로의 끝을 명중 의미
파일은,이 경우에, 우리는 이서 파일 및 True를 반환 이후 우리
성공적으로 사전로드 우리의 트라이에.
>> 좋아, 이제하자 체크를 확인하세요.
확인 기능을 보면, 우리는 참조 그 검사는 부울을 반환하는 것입니다.
이 단어가 있다고하면 True를 반환 전달되는 우리의 트라이에 있습니다.
그것은 그렇지 않으면 False를 반환합니다.
>> 그래서 우리가 어떻게 있는지 여부를 확인하려고 이 말씀은 우리의 트라이에?
우리는 여기에서 보는 그 직전처럼, 우리는 반복하는 커서를 사용하는 것입니다
우리의 트라이를 통해.
지금, 여기, 우리는 반복하는거야 우리의 전체 단어 이상.
그래서 우리가 단어를 반복 전달, 우리가 결정하는거야
인덱스 어린이 배열에 그 단어 브래킷 I에 해당합니다.
따라서이 정확히처럼 보이게하는 것입니다 로드, 어디 단어 브래킷 나는 경우
아포스트로피, 우리는 인덱스를 사용하려면 1 마이너스 알파벳 우리가 결정하기 때문에
우리가 가고있는 곳이다 아포스트로피를 저장합니다.
>> 그렇지 않으면 우리는 tolower를 사용하는 것입니다 단어 브래킷 전.
그래서이 할 수있는 단어를 기억 임의 대문자, 그리고 우리
우리가 사용하고 있는지 확인하려면 사물의 소문자 버전.
그리고 그 소에서 빼기 다시 한 번, 우리에게주는
알파벳 위치 그 문자의.
그래서 색인 될 것 어린이 배열에.
>> 그리고 지금, 만약 아이들에 해당 인덱스 배열이 null, 그것은 우리에게 의미
더 이상 반복 할을 계속할 수 우리의 트라이 다운.
그런 경우,이 단어는 할 수 없습니다 아마도, 우리의 트라이에지기 때문에 그
즉이있을 것입니다 의미했다 경로 아래로 그 단어에, 당신은 것
널 (null)가 발생하지 않습니다.
그래서 널 (null)가 발생, 우리는 false를 반환합니다.
이 단어는 사전에없는 것입니다.
null이 아니었다면, 우리는거야 반복하기를 계속, 그래서 우리는거야
그 가리 키도록 우리의 커서를 업데이트 그 인덱스에 특정 노드.
>> 그래서 우리는 내내 그 일을 계속 전체 단어.
우리는 널 (null)을 때린 적은 가정이 수단 우리는 전체를 통해 얻을 수 있었다
세계와 우리의 트라이의 노드를 찾아, 그러나 우리는 확실히 아직 끝나지 않았습니다.
우리는 단지 True를 반환하지 않습니다.
우리는 커서 오류 단어를 반환 할 고양이가없는 경우 이후 다시 기억
우리 사전과 재앙이에 우리는 성공적으로 통과합니다
단어 고양이, 그러나 커서 단어 거짓과 참되지 않습니다.
그래서 우리는 표시하기 위해 커서의 단어를 반환 여부를이 노드는 실제로 단어,
그리고 그 확인을 위해의.
>> 그래서 크기를 확인 할 수 있습니다.
그래서 크기는 매우 쉽게 될 것입니다 이후로드의 기억, 우린
위한 사전의 크기를 증가 우리는 발생하는 각 단어.
그래서 크기는 그냥 돌아 오려고하는 사전 크기, 그거야.
>> 좋아, 그래서 마지막으로, 우리는 언로드있다.
그래서 언로드, 우리가 사용하는거야 실제로 모든 할 수있는 재귀 함수
우리, 그래서 우리의 기능에 대한 작업 언 로더를 호출 할 것입니다.
무엇 언은 할거야?
우리는 언은 예정 여기를 참조하십시오 모든 아이들에서을 반복
이 특정 노드, 그리고 만약 아이 노드가 null는 아니고, 우리는거야
자식 노드를 언로드.
>> 그래서이 반복적으로 예정 우리의 아이들을 모두 언로드.
우리는 있는지 들어가면 우리 아이들의 모든 언로드 된, 우리
자신을 해방, 그래서 해결할 언로드 할 수 있습니다.
그래서이 재귀 적으로 언로드 전체 트라이하고 그건 한 번
다, 우리는 단지 True를 반환 할 수 있습니다.
언로드 우리가있어, 실패 할 수 단지 물건을 확보.
그래서 일단 우리가 확보 완료 모든 것이 True를 반환.
그리고 바로 그거야.
내 이름은 롭이며,이 [들리지이었다.