天天看點

[CareerCup] 13.1 Print Last K Lines 列印最後K行

13.1 Write a method to print the last K lines of an input file using C++.

這道題讓我們用C++來列印一個輸入文本的最後K行,最直接的方法是先讀入所有的資料,統計文本的總行數,然後再周遊一遍列印出最後K行。這個方法需要讀兩遍檔案,我們想使用一種更簡便的方法,隻需要讀取一遍文本就可以列印出最後K行,這裡我們使用一個循環數組Circular Array,原理是我們維護一個大小為K的字元串數組,當數組存滿後,新進來的資料從開頭開始存,覆寫原有的資料。這樣當我們讀完整個文本,最後K行就儲存在了這個大小為K的字元串數組,隻不過順序不相同,我們始終要有個變量來記錄最後一個進來的資料的位置,這樣我們就可以按原文本的順序列印出最後K行了,參見代碼如下:

繼續閱讀