☺ 設計 ☺
1,動态數組的設計

2,連結清單的設計
(結點Node模型 也設計成一個類,因為它隻在 連結清單内部使用,是以它是連結清單類的内部類)
3,雙向連結清單的設計:(連結清單模式中 first 指向了 頭結點, last 指向了尾結點)
好處:當要找的index 大于 size 的一半(size >> 1),last指針開始從後到前尋找
當要找的index 小于 size 的一半 (size >> 1),first指針開始從前到後尋找
4,對于接口的完美利用:
1,遇到局限情況:
二叉樹的周遊:“被寫死”:隻能列印出該結點:
2,設計改善:
傳入一個接口變量的參數(該接口定義了一個方法(該方法有一個參數是結點參數))
因為是接口,則外界使用到它時,便需要實作它的方法,而它的方法就含有結點參數
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3,設計增強:(層序周遊)
增強周遊:通過接口方法的傳回值,控制周遊的停止(so 接口方法需要寫成可以被控制的,例如布爾類型)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3-2,設計增強:(前序周遊/中序周遊/後序周遊)
差別:前序周遊/中序周遊/後序周遊 與 層序周遊的最大差別是:前者使用了遞歸,後者就是普通的疊代。
應對差異的差別:層序周遊可以直接止步于目前,而使用了遞歸的前序周遊/中序周遊/後序周遊的止步需要看前一步的結果,so 需要有一個變量記錄。
●如果是前序定義一個記錄變量,中序定義一個記錄變量,後序定義一個記錄變量的話,定義的變量有點多(第一個缺點),
●而且定義的變量必須是全局變量(但是使用多線程的話,造成線程不安全~第二個缺點)
☺發現了接口對象vistitor 是具有全局的特點(因為自從外界傳入之後,使用的vistitor 便是同一個,
我們希望往visitor 對象中添加屬性,但是vistior是接口,so 修改成靈活的抽象類)