順序表的定義:
順序表——用順序存儲的方式實現線性表栓徐存儲。把邏輯上相鄰的元素存儲在物理位置上也相鄰的存儲單元中,元素之間的關系由存儲單元的鄰接關系來體現
順序表的實現——靜態分配:(靜態分配是將順序表一次性開辟一個連續的空間,這些空間一旦確定則不可改變空間大小)
順序表的實現——動態分配
順序表的特點:
- 隨機訪問,即可以在O(1)時間內找到第i個元素。
- 存儲密度高,每個節點只存儲數據元素。
- 擴展容量不方便(即便采用動態分配的方式實現,擴展長度的時間復雜度也比較高)。
- 插入,刪除操作不方便,需要移動大量元素。
總結:
順序表——插入
首先我們要清楚一點的是數組的位置對應哪個下標,data[10]定義的長度為10,對應的位序從1開始,下標則從0開始。
ListInsert(L,3,3)的意思是,將數字3插入到L表中數組data[2]位序為3下標為2的內存空間中。為了能將數據插入,需要將
data[2]的數據及后面數組往后都移動一位,騰出data[2]的空間將3放進去。
在我們插入數據的時候,要學會思考代碼的“健壯性”意思是我們這個代碼能否給使用者反饋,而不至於在出現錯誤時無從下手。
例如這個順序表中,當數組空間被占滿的時候,能夠進行安全校驗,開發者要有能夠預判各種異常狀況的思維。
插入操作的時間復雜度:
順序表——刪除
這里要特別注意&的使用
刪除操作的時間復雜度
插入刪除總結:
順序表——查找
結構類型的比較:
按值查找的時間復雜度:
查找總結: