哪裡有高質量的c語言鏈表實現(單向、雙向、是否帶頭節點等不限)代碼?

個人有了某種強迫症,不拿到高質量的資料就不肯學習,害怕一開始就學錯今後糾正很花時間。

請問那些知名開源代碼中有c語言的鏈表實現?

或者某知名IT作者或大牛的實現?

(linux內核的list_head 那種除外,因為感覺container_of不見得所有的c編譯器都支持)


1、glib

2、container_of 理解 container_of (和其中用到的 offsetof)是每個符合標準的 C 編譯器都要支持的。 offsetof

3、「個人有了某種強迫症,不拿到高質量的資料就不肯學習」——得電。

在你真正學習了某個知識之前,你是沒有理由去對領域知識的好壞做出判斷的——當你學習了足夠多的知識之後你才能做出一個有效的判斷,所以請莫怪我的不友善,有這個時間在這裡唧唧歪歪這個質量差那個不兼容,直接找自己知道的、有人推薦過的代碼開始學習,開始自己實現,寫夠數量、分析夠數量了,自己自然對好壞有個清楚的判斷。


1 通用數據結構演算法庫GDSL - The Generic Data Structures Library, a free data structures manipulation library for C programmers 裡面有一些經典數據結構的純C實現

2 https://github.com/activesys/libcstl 這個比較有意思的在於是使用純C來模仿實現C++裡面的STL,所以裡面有一個鏈表的實現list,不過從實現思路上跟上面的又不同


redis.


Linked list - Rosetta Code

這裡推薦一個專門放各種演算法代碼的wiki

每種演算法都用幾十種語言實現,學演算法學新語言必備呀。。

名字是不是氣吞山河。羅賽塔石碑你們知道吧?

很有意思,埃及國王的詔書。同樣的內容寫了三種語言。

這是文明天生的包容。這是讓人類活到現在的力量。

有興趣的話,可以多看看那些「不入流」的語言,實現的同樣演算法。

很有意思,恍惚之間視線里只剩極度抽象的邏輯。


FreeBSD 的宏實現 http://fxr.watson.org/fxr/source/sys/queue.h


可以看看我寫的,放在了Github上 hit9/C-list · GitHub


雖然不是C語言,但還是必須要推薦SGI的C++ STL庫。

畢竟C++在這方面相比於C的優勢是非常明顯的。

Download STL source code

可搭配侯捷所著《STL源碼剖析》閱讀。


C語言實現的?

那Linux源代碼中,關於鏈表的使用相當有意思。

可以考慮直接讀代碼。

如果喜歡C Linux的代碼真的太贊了!

((?_?; 跑題了。。。。)


container_of不見得所有的c編譯器都支持??

請看container_of的實現在下結論也不遲。ok?


我怎麼覺得基本的數據結構這個都沒有什麼區別呢?

主要看你使用的場景,一般通用的場合,

演算法書上的也算不錯的了。


推薦閱讀:

GNU代表了什麼?
怎樣才算熟悉Linux內核?

TAG:Linux | C編程語言 | 數據結構 |