【自考】 資料結構考前總結 【CH1-CH3】
CH1 資料結構概論
1. 邏輯結構:集合(CH6 查詢表),線性結構(CH2 線性表 、CH3 棧、佇列、陣列),樹形結構(CH4 樹和二叉樹),圖結構(CH5 圖)
2. 儲存結構:順序儲存、鏈式儲存(程式碼:初始化、插入、刪除)、索引儲存、雜湊儲存。
3. 演算法:規定求解給定問題所需處理步驟及其執行順序。
4. 演算法的性質:正確性、易讀性、時空性、健壯性。
5. 演算法的時間複雜度是演算法輸入規模的函式。
6. 資料、資料元素(線性表中特性相同)、資料項(域,欄位)
CH2 線性表 CH3 棧、佇列、陣列
1. 單鏈表的初始化
LinkList InitateLinkList( )
//建立一個空的單鏈表
{
// 宣告型別
LinkList head;
// 動態建立malloc一個節點,它是頭結點
head = malloc(sizeof(Node));
// 設定結點的資料域和指標域
head -> next = NULL;
return head;
}
有些話兒要說:
head = malloc(sizeof(Node));
sizeof(Node)獲取和結構體Node空間大小一致的地址空間
擴充套件:
建立指向節點的指標的語句
eg: p = (LkQueNode *)malloc(sizeof(LKQueNode)) [課本 P86]
獲取結構體鏈佇列結點的地址空間大小,動態建立該結構體的一個例項,獲取該例項的地址,將地址賦值給p.
鏈式儲存方式在其他複雜的邏輯結構上的運用時(如:佇列,棧,圖,數) ,建立的是指標。
2. 棧和佇列
本質是線性表,表頭(棧底和隊頭,可以不儲存資料或者儲存公共資料,如:length)。
棧 什麼先出? 後進先出
佇列 什麼先出? 先進先出
3. 假溢位 順序佇列,進一個rear++,出一個front++。
4. 迴圈佇列,犧牲一個儲存空間來區分隊首和隊尾。因為本質是線性表,front指的是表頭,表中第一個資料元素的前一個。
rear = (front + CQ.length) % m.
佇列空 CQ.rear = CQ.front 佇列滿 (CQ.rear +1)%m=CQ.front
5. 雙向迴圈連結串列中插入結點
口訣: 先積極主動向環境介紹自己,再讓環境接納自己。
若 新插入結點是由工作指標 s 所以,開始是 s =... , s = ... , 然後是 ... = s, ...= s.
6. 雙向迴圈連結串列為空 孤單的頭結點抱緊了自己,左手(piror)抱自己,右手(next) 抱自己。
7. 出棧和取棧頂元素的區別 Push(壓,入棧),Pop(像 泡泡一樣往上冒)
8. 壓縮儲存
稀疏矩陣,三元組表示法 (i , j , v)
三元組表 ((Ai1,Aj2 , v1),(Ai2 , Aj2 , v2), ... ,( Ain , Ajn , vn))