텍스트 파일에서 단어 어카운트 수를 계산하여 배열에 저장하는 프로그램이 있습니다. 지금까지 고정 배열을 사용하고 모든 것이 잘 작동하지만 지금은 동적 배열로 변경하여 메모리 낭비/필요성을 없앴습니다. malloc과 realloc을 사용하여이 작업을 수행해야한다는 것을 알고 있지만 실제로 작업하는 방법을 이해하지 못합니다.동적 확장 배열 C
첫 번째 아이디어는 텍스트 파일의 단어를 계산 한 다음 모든 공간을 malloc할만한 충분한 공간 이었지만 중복 된 단어는 카운터가 증가하지만 배열에 다시 추가되지 않으므로 낭비되는 공간을 남겨 둡니다.
이 방법은 의미있는 것처럼 들리며이를 달성하는 가장 좋은 방법일까요? 내가 먼저 한 단어와 그 카운터를 찾을만큼 작은 배열을 malloc한다면. 그런 다음 배열에 추가 할 필요가있는 새 단어를 찾을 때마다 다른 단어와 카운터를 넣을만큼 충분히 realloc됩니다. 중복이면 realloc이 필요하지 않습니다. 기존 카운터가 증가합니다.
배열을 동적으로 확장하는 것과 아무런 관련이없는 또 다른 솔루션은 K & R의 "The C Programming Language"(전체 구현, 자세한 설명 참조)에 나와 있습니다. 단어와 빈도를 기록하기 위해 이진 트리를 사용합니다. 이것은 단어 계산 문제에 대한 최적의 메모리 사용을 가질뿐만 아니라 효율적이며 매우 깨끗한 솔루션입니다. 어쨌든, 당신이 C 책을 읽고 프로그래밍을한다면,이 책은 많은 도움이 될 것입니다. –