C語言內建數據結構類型##
整型##
整型數據是最基本的數據類型,不過從整形出發衍生出好幾種integer-like數據結構,譬如字符型,短整型,整型,長整型。他們都是最基本的方式來組織的數據結構,一般是幾位bytes,首個bit也許是符號位,剩下的(從大小端)讀出來作為數值。
浮點型##
指針型##
[========]
C語言聚合數據結構類型##
數組##
數組名字##
數組名字在兩種情況下是作為非第一個成員的指針常量,這里的兩個情況是取數組名的地址:這是取數組的地址,不是取第一個成員的地址,第二個情況是sizeof的操作,這個操作是計算這個數組的總大小,而不是第一個成員的。
PS:指針的加法運算是需要按照指針指向的數據類型來遞加。
下標引用和間接訪問對比##
作為實參傳遞和作為形參聲明##
初始化##
長度計算##
結構體##
聯合##
枚舉##
鏈表##
鏈表是許多更加高級的數據結構的基礎,鏈表是一串鏈條似的結構體節點通過指針的方式鏈接起來,鏈表有分為單向鏈表和雙向鏈表。
鏈表有個一個head node,有一個cursor。這個鏈表最大的問題在於每次檢索node或者node里面的具體member,都是從head node開始逐一retrieve的。
初始化##
索引##
插入和追加##
單向鏈表:
- 對於鏈表的插入,一種方式是采用常規的pervious/next node points的方式來breakup,再手拉手牽起來。
- 另一種方式是巧妙的使用指向指針的指針來實現,非常巧妙,以遇到指針的指針的時候要特別注意,在
**linkp
傳遞過來之后,*linkp
只是一個新產生的臨時變量
雙向鏈表:
一種是規則串聯的雙向鏈表,還有無法規則串聯起來(混亂的)雙向鏈表。
"Pointers on C"這本書對於鏈表的講解不是很詳細,書中提到的的鏈表需要注意的是鏈表尾部需要及時判斷,需要插入的書在鏈表頭或者尾該怎么處理。
修改##
刪除##
排序和銷毀##
真正理解這個概念可以參考Linux開發基礎篇,這個在Linux里面是重要基礎知識
[========]
[========]
C語言抽象數據結構##
棧##
隊列##
常用的是隊列,這個在網絡編程中常常用作收發包buffer的實現。實現隊列的方式主要有靜態數組,動態數組和鏈表,尤其是以鏈表為常用。
樹##
圖##
[========]
數據屬性##
這是一好的數據結構,這離得人們都說這個數據結構是好的。