03 2009 檔案
摘要: “ 算了,今天就到這里吧。我們明天再運用遞歸的思想解決這個小朋友吃蘋果的問題,順便再討論一些對算法的效率進行評估的方法……這些都是基礎,如果不了解這些就去盲目的學習C++語言、面向對象編程和類庫什么的,對你有害無益……因為你的思想就會局限在一個比較低的水平上。”
“是嗎是嗎?”小P不解,“會嗎?”
“的確是這樣。”老C回答,“我們學習的是編程,而不僅僅學習的是語言。我們希望通過對語言的學習提高的是編程的能力……這樣你在以后的工作中,無論使用什么語言,都會飛快的上手,同時分析問題和解決問題的能力也會有顯得眾不同……要深入進去,這就是為什么說teach yourself programming in ten years的原因……這10年中,你學習的如果僅僅是語言的話,那么等10年后,你會發現,自己原來沒有10年的編程經驗,有的只是10個1年編程經驗……”
閱讀全文
摘要: “其實就是和一般的待定系數法的思想是一樣的,給出一個我們已經知道的特解——這個解一般都是比較容易看出來或者推導出來的——將這個特解代入原方程,并化簡,可以得到一個關于系數的方程;再猜測一個特解,代入原方程,化簡后又得到一個關于系數的方程……如果我們得到待定系數個數的方程——比如我們待定3 個系數——我們可以通過3個特解得到3個關于這3個系數的方程,若這3個方程聯立后可解,那么我們就可以通過方程組解得這3個系數。”老C擦擦唾沫。
閱讀全文
摘要: “哦,這是一個習慣用法。一般的抽象類的析構函數要么是public virtual的,要么是protected 非virtual的。我在這里將它設計為protected 非virtual是因為我不想讓Iterator動態生成,就是說不希望Iterator的繼承類的對象是在堆上創建的。”看到小P還是有些莫名其妙,老 C接著說,“關于這個小技巧,我會在后面一段時間……一個月后吧……跟一些其他的小技巧一起總結一下,在這里你就先將就著看吧。”
“也好……”小P槑。
“接下來的代碼……很傻很天真……”老C解釋道,“因為在這里只是說明問題而已,你可不要學習這種設計啊。”
閱讀全文
摘要: “哦,叫我想想。”小P眨眨眼睛,“好像和遍歷這些數據結構花費的時間有關系,如果我遍歷一遍這些數據結構的所有元素所花費的時間是元素個數的線性函數,那么這個數據結構就是線性表,哦……時間復雜度就是n啦。”小P又想想,“好像就是這樣,我所接觸的線性表包括array, linked list, stack, queues,而queues可能有各種奇怪的queue,比如循環的,優先級的什么的……”
“你的記憶力不錯啊。”老C稱贊道,“嗯,基本上線性表就是這么回事啦。”他點點頭,“我再來問一個貌似題外話的問題,你知道在C語言中,有哪4類指針嗎?”
“槑……”小P搖頭,飛快。
“在C語言中,有4種指針,分別是一般的指針,空指針、0指針和past the last one指針。”老C道。
“槑……”小P道,“一般的指針就是指向數據和函數的指針吧,空指針應當就是void*,0指針應當就是無法dereference的那種指針,那么什么是past the last one指針?”他不解的問。
“很簡單,我
閱讀全文