【事件】
某名資料結構基礎網絡學員在“單連結清單的基本算法”部分連問兩個問題:
老師,我while語句裡面<code>j<i-1</code>改為<code>j<i</code>,else裡面直接<code>q=p</code>可以麼? 老師,你這樣萬一剛好<code>q->next==null</code>呢,這樣沒影響吧?
我的“即時”回答,也已經是10個小時之後了,我不知道他看到解答後,狀态還在不在。另外,這種問題,并非是可以、不行就簡單回答的,背後很細緻的考量,用有限的文字根本說不清楚。
這名認真學習、主動思考的學員,此時需要的是在學習方法上的改進。這是比搞懂某算法細節更重要的事。行不行?有沒有影響?運作并測試程式一驗證就見分曉。算法一處改動,往往别處也得有動作,更具價值的“改算法”學習環節,立刻就可以實施。
于是,有了下面的指導語——
【答複】
你學得很細,我特别欣賞。你在學習過程中,能主動思考并且想到的問題也都在點上,這又是一個非常難得的學習品質。回答你“行不行”、“可以嗎”的問題,實際上,我基本都會告訴你可以,背後是,算法的其他位置處也需要給出更改。是以,在“可以”或“不可以”的後面,我們關注的真正核心是這個地方改了以後,其他地方如何随之變化。在算法學習過程中,“了解已有的算法”是基本的層次,而你的學習就此可以進入“改寫已有算法”的層次。鑒于網絡學習的特點,我不可能給你實時的指導,我更願意借此讓你在方法上更進一步,将這種“改寫”發展到極緻,促進你綜合能力的提高。
相信你這樣能将資料結構學得更加紮實!