1. 程式人生 > >【自考】 資料結構考前總結 【CH1-CH3】

【自考】 資料結構考前總結 【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))