天天看點

設計

☺ 設計 ☺

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 修改成靈活的抽象類)

設計
設計
設計

繼續閱讀