Microsoft 인터뷰 질문. C를 사용하여 파일의C 파일의 마지막 n 줄을 읽는 방법
읽기 마지막 n 라인 (정확하게)
그럼이를 달성하기 위해 이렇게 많은 방법이있을 수 있습니다, 그 중 몇 가지가있을 수 :
-의> 간단한 첫 번째 패스에서는 모두 파일의 줄 수를 계산하고 두 번째 패스에서는 마지막 n 줄을 표시합니다.
-> 또는 모든 행에 대해 이중 링크 된 목록을 유지하고 마지막 n 행까지 n 번째 마지막 노드까지 연결된 목록을 역순으로 탐색하여 표시 할 수 있습니다.
-> 정렬 꼬리 -n의 FNAME의 무언가를 구현
-> 우리는 N으로 길이와 우리가 끝에 도달 할 때까지 라운드 로빈 방식으로 동적으로 저장된 모든 라인 더블 포인터를 가질 수 있습니다 더를 최적화하기 위해, 파일의.
예를 들어 파일에 10 개의 행이 있고 마지막 3 개의 행을 읽으려는 경우. 우리는 버퍼의 배열을 buf [3] []로 만들 수 있고 실행시에 마지막 줄에 도달 할 때까지 mallocing을 계속하고 순환 방식으로 버퍼를 해제하고 배열의 현재 인덱스를 알 수있는 카운터를 유지할 수 있습니다.
위의 방법 중 하나라도 정답이나 이와 유사한 질문에 대한 다른 일반적인 접근 방식을 얻는 데 도움이 될 수있는 사람이라면 누구나 나를 좀 더 최적화 된 솔루션 또는 atleast 가이드로 도울 수 있습니까?
마지막으로 최적화 된 것으로 보입니다. –
꼬리 구현을 살펴보십시오. http : // stackoverflow.com/questions/10164597/how-would-you-implement-tail-efficient – StarPinkER
추가 포인트의 경우 파일의 줄 수가 n 개 미만인 경우 오류를 반환합니다. –