第三節課作業

1.什麼是鏈表

     鏈表我的理解要包含以下特徵:(1).由n個節點離散分配;(2).每個節點通過指針連接(3)每一個節點由一個前驅節點和一個後驅節點(4).首節點沒有前驅節點,尾節點沒有後驅節點;

 

     滿足上面的4條,我們就稱爲鏈表;鏈表既然由很多個節點,那節點又由什麼組成?節點由兩個部分組成,一是數據域,用來存放有效數據;二是指針域,用來指向下一個節點;下面用C語言來構建鏈表數據結構,首先應該構造出節點,然後再把所有的節點連起來,就構成了鏈表;

 

(1)節點的構造

 

        

 

    typedef 只是給數據類型取個別名,即 typedef  數據類型  別名;我們知道struct Node 是我們定義的數據類型;

 

(2)鏈表的創建

 

     在創建鏈表之前,我們需要需要了解一下專業術語:

 

   首節點:存放第一個有效數據的節點;

 

   尾節點:存放最後一個有效數據的節點;

 

   頭節點:頭節點的數據類型與首節點的數據類型相同,並且頭節點是首節點前面的那個節點,並不存放有效數據;頭節點的存在只是爲了方便鏈表的操作。

 

   頭指針:指向頭節點的指針;

 

   尾指針:指向尾節點的指針;

 

首先,我們應該創建一個頭節點,並用頭指針指向它,用C語言描述:用malloc向計算機申請一塊內存,並定義一個指向與頭節點數據類型相同的指針(一定要判斷申請內存是否成功);

 

然後,要知道要創建鏈表的長度,用一個循環來每次創建一個節點,並把每個節點連在一起;

 

指針就是一個存放地址的變量

 

當指針指向某個變量

 

這時這個指針裏就存放了那個變量的地址

 

同時可以利用指針直接取變量中的值用 只要在指針前加 * 就是取其

 

真值了(也就是被指向的變量的值)

 

如果不用指針,傳送速度慢,如果通過指針,只要傳遞一個地,不用傳送該地址 的內容就可以直接進行運算,方便快捷,

 

使用指針來讀取數據,在重複性操作的狀況下,可以明顯改善程序性能

 

就是一連續內存空間,類似於數組,不過數組的內存空間一旦初始化就是不變的。

鏈表開始是一個“頭指針”,定義了鏈表開始的位置,下面是像鏈條一樣的一串節點,每個節點包含數據部分和指針部分。前一節點的指針指向後一節點,最後一個節點是數據和空地址,表示結束。

好處在於空間是動態分配的,需要多長可以一直鏈下去。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章