目錄
一.順序表的定義
1.順序表的概念及結構
1.1線性表
2.順序表的分類
2.1靜態順序表
2.2動態順序表?
二.動態順序表的實現
1.準備工作和注意事項
2.順序表的基本接口:
? ?2.0 創建一個順序表
? ?2.1 順序表的初始化
2.2 順序表的銷毀
2.3?順序表的打印
3.順序表的尾插和尾刪接口:
4.順序表的擴容接口:
5.順序表的頭插和頭刪接口:
6.順序表的指定位置插入和刪除接口:
7.順序表的查找接口:
?三.完整代碼
SeqList.c:?
SeqList.h:
test.c?:
一.順序表的定義
1.順序表的概念及結構
1.1線性表
2.順序表的分類
順序表的底層是數組,但和數組不一樣的是,它對數組進行了分裝,增加了增刪查改等接口
2.1靜態順序表
概念:使用定長的數組存儲元素(用存儲整型舉例)
缺陷:?空間給多了造成空間浪費,給少了空間不夠
這里我解釋一下為什么用 replace 代替 int : 這樣是方便以后修改順序表存儲別的數據類型,用N代替數組的元素個數同理,修改時更方便
2.2動態順序表?
二.動態順序表的實現
1.準備工作和注意事項
?創建3個文件:
? 第一個文件:用于接口函數和所有需要用到的庫函數頭文件的聲明,定義順序表的結構
? 第二個文件:用于對接口函數的定義
? 第三個文件:用于接口的測試
? 注意事項:建議每個函數接口寫完對其進行調試,避免最后產生大量報錯而束手無措
? ? ? ? ? ? ? ? ? ? 我在每個接口的代碼上面都添加了很多注釋,幫助各位未來的大佬增加理解哦
2.順序表的基本接口:
? ?2.0 創建一個順序表
? ?2.1 順序表的初始化
對于我為什么要先用arr來接收開辟好的空間,我本來是想著開辟失敗會影響先前開辟好的空間,但轉念一想先前本來也沒有開辟空間那,如果開辟失敗的還用arr接收還是直接用結構體成員指針接收都一樣那,但從更廣泛的編程實踐和代碼質量的角度考慮,先用arr
接收是一種更好的編程習慣,有助于提高代碼的嚴謹性和可讀性,減少潛在的錯誤和問題。?
2.2 順序表的銷毀
2.3?順序表的打印
?提前將打印接口寫好,方便后面的觀察
3.順序表的尾插和尾刪接口:
尾插:
切記:在插入數據后都要讓有效數據個數+1
尾刪:
4.順序表的擴容接口:
由于順序表的插入接口都要進行擴容判斷,所以我們可以把擴容單獨分裝成一個函數
這樣在后續的代碼中我們直接調用這個函數就可以了?
5.順序表的頭插和頭刪接口:
頭插:
頭刪:
6.順序表的指定位置插入和刪除接口:
插入:
刪除:
由于下面這些代碼邏輯都差不多,我也就沒做注釋了,指定位置的插入刪除無非就是要挪動數據,這個你自己畫圖后就可以看懂了
7.順序表的查找接口:
?三.完整代碼
SeqList.c:?
?SeqList.h:
test.c?:
這部分我只調用了部分函數(僅供參考)