鏈式存儲結構的定義
?1.概念定義:
- n個結點離散分配
- 彼此通過指針相連
- 每個結點只有一個前驅結點和一個后繼結點
- 首結點沒有前驅結點,尾結點沒有后繼結點
2.專業術語
-首結點:第一個有有效數據的結點
-尾結點:最后一個有有效數據的結點
-頭結點:第一個有效結點之前的那個結點,頭結點并不存放有效數據,加頭結點的目的主要是為了方便對鏈表的操作,頭結點的數據類型和首結點的類型一致
-頭指針:指向頭結點的指針變量
-尾指針:指向尾結點的指針變量
3.確定一個鏈表需要幾個參數(也就是獲得鏈表的所有信息)
只需要 頭指針 這個參數,因為我們通過頭指針可以推算出鏈表的其他所有信息
? PS:free(p) p是一個指針域,就是釋放p所指向的結點所占的內存,而不是釋放他本身所占的內存
? 4.分類
1.單鏈表
2.雙鏈表:每一個結點有兩個指針域
3.循環鏈表:能通過任何一個結點找到其他所有的結點
4.非循環鏈表
? 5.算法
1.遍歷
2.查找
3.清空
4.銷毀
5.求長度
6.排序
7.刪除節點
8.插入節點
6.算法
狹義的算法是以數據的存儲方式密切相關的,廣義的算法是與數據的存儲方式無關
泛型:利用某種技術達到的效果就是:不同的存儲方式,執行的操作是一樣的。
?
?
復習:
數據結構:
俠義:
數據結構是專門研究數據存儲的問題
數據的存儲包括兩方面:個體的存儲 + 個體關系的存儲
廣義:
數據結構既包括數據的存儲也包括數據的操作
? 對存儲數據的操作就是算法
算法:
俠義:算法是和數據的存儲方式密切相關
廣義:算法和數據的存儲方式無關
這就是泛型思想
?
數據的存儲結構有幾種:
線性:
連續存儲(數組)
優點:存取速度很快,
缺點:插入以及刪除速度較慢
空間通常有限制
事先必須知道數組的長度
需要大塊連續的內存塊
離散存儲(鏈表)
優點:空間沒有限制
插入以及刪除元素速度快
缺點:
? 存取的速度較慢
線性結構的應用:
棧
隊列
非線性:
樹
圖
?
?
?
?
?
?
?
?
?