系統程式設計師成長計畫學習 1 通用雙鏈表

2021-06-28 21:04:41 字數 711 閱讀 6985

如何封裝

1.在標頭檔案中宣告外部需要看到的資料結構,而具體的實現放在.c檔案中具體實現。

比如在標頭檔案中:

enum _dlistret

dlistret;

struct _dlist;

typedef

struct _dlist dlist;

2.在標頭檔案中提供操作該資料結構的介面宣告。

3.將外部不需要的函式、而.c檔案需要使用的函式的宣告和定義都放在.c檔案中,並且加上static

4.禁止使用全域性變數(除了單例模式)

5.資料結構中的資料部分要考慮到通用性

此處採用了void*型別

6.運算元據結構的介面要考慮通用性

介面的具體功能是由外部需求決定的,而不是隨意想象的,具體開發中可以按照測試驅動的方式來編寫**,可以提高效率。

7.讓c++可以直接呼叫的方法

在.h檔案中如下

extern

"c"#endif

8.採用函式指標擁抱變化

比如列印void*資料,提供函式指標,具體如何列印由客戶端提供。

《系統程式設計師成長計畫》學習交流 2 通用單鏈表

更新說明 2012 08 17 修改makefile 2012 04 22 更新了slist.c中的slist delete函式實現。描述 仿照 系統程式設計師成長計畫 通用雙鏈表,寫的乙個通用單鏈表。如有錯誤,歡迎指正。清單 slist.h ifndef slist h define slist ...

系統程式設計師成長計畫005

1.這個變成大寫的函式,就不需要用函式指標來給foreach做引數了。因為他沒有什麼其他變種,不像print那樣,既要print int又要print str。函式指標,或者說 函式,別瞎用!2.書裡的寫法 dlist foreach dlist,str toupper,null 看來還是堅持了 函...

系統程式設計師成長計畫 併發 五

文章出處 作者 李先靜 無鎖 lock free 資料結構 多執行緒併發執行時,雖然有共享資料,如果所有執行緒只是讀取共享資料而不修改它,也是不用加鎖的,比如 段就是共享的 資料 每個執行緒都會讀取,但是不用加鎖。排除所有這些情況,多執行緒之間有共享資料,有的執行緒要修改這些共享資料,有的執行緒要讀...