文章目錄
數據結構
數據結構概述
定位
我們如何把現實中大量而複雜的問題以特定的數據類型和特定的存儲結構保存到內存儲器(內存)中,以及在此基礎上爲實現某個功能(ps:查找某個元素,刪除某個元素,對所有元素進行排序)而執行的相應操作,這個相應的操作也叫算法。
數據結構 = 個體的存儲 + 個體的關係存儲
算法 = 對存儲數據的操作(狹義的算法)(泛型 廣義的算法)
算法
解題的方法和步驟
衡量算法的標準
- 時間複雜度: 大概要執行的次數,而非執行的時間
- 空間複雜度: 算法執行過程中,大概所佔用的最大內存
- 難易程度(應用到應用程序中 最關鍵)
- 健壯性
數據結構的地位
數據結構是軟件中最核心的課程
程序 = 數據的存儲 + 數據的操作 + 可以被計算機執行的語言(程序 = 算法 + 數據結構)
預備知識
指針
- 指針的重要性:指針是C語言的靈魂
- 定位:地址
- 內存單元的編號
- 從0開始的非負整數 範圍(0—FFFFFFFF
- 指針 指針就是地址,地址就是指針
指針變量的存放單元地址的變量
指針的本質是一個操作首先的非負整數
指針變量也是變量,只不過他存放的不能是內存單元的內容,只能存放內存單元的地址 - 分類
1.基本類型的指針
結構體
- 爲什麼會出現結構體
結構體是用戶根據實際需求,自己定義的複雜數據類型 - 如何使用結構體
struct Student st = {1000,“sdasda”,20}
struct Student pst =&st;
1.st.sid
2.pst->sid
pst 所指向的結構體變量中的sid這個成員 - 注意事項:結構體變量不能加減乘除,但是可 以賦值,普通結構體變量和結構體指針變量作爲函數傳參的問題
動態內存的分配和釋放
模塊1 線性結構(把所有的節點用一條直線穿起來)
連續存儲(數組)
1.什麼叫做數組
元素類型相同,大小相等
2.數組的優缺點
離散存儲(鏈表)
-
定義:
n個節點離散分配
彼此通過指針相連
每個節點只有一個前驅節點,每個節點只有一個後續節點
首節點沒有前驅節點,尾結點沒有後續節點- 專業術語:
首節點:第一個有效的節點
尾節點:最後一個有效的節點
頭結點:頭結點的數據類型和首節點類型一樣
第一個有效之前的那個節點
頭結點並不存放有效數據
加頭結點的目的主要是爲了方便對鏈表的操作
頭指針:指向頭結點的指針變量
尾指針:指向尾節點的指針變量
- 專業術語:
-
確定鏈表的幾個參數(如果希望通過函數對鏈表進行處理,我們至少需要接受鏈表的哪些參數):
只需要一個參數:頭指針
因爲我們通過頭指針可以推算出鏈表的其他所有信息 -
分類;
-
算法;
-
優缺點: