順序存儲結構的優缺點引出單鏈表結構類型定義


順序存儲結構的評價:

優點:

① 是一種 隨機存取 結構,存取任何元素的時間是一個常數,速度快;

② 結構簡單,邏輯上相鄰的元素在物理上也是相鄰的;

③ 不需要使用指針,節省存儲空間。

 

缺點:

① 插入和刪除元素要移動大量元素,消耗大量時間;

② 需要一塊連續的存儲空間;

③ 插入元素可能發生“溢出”;

④ 自由區中的存儲空間不能被其他數據占用(共享),存在浪費空間的問題。

內存:網格中,2k,5k,3k 指的是自由區中未被使用的存儲空間。

2k 占用 5k 占用 3k

 

 

單鏈表:單鏈表指的是線性表的每個節點分散地存儲在內存空間中,先后依次用一個指針串聯起來。

data:數據域,用於存放元素

next:指針域,用於存放下一個結點地址的部分

單鏈表分為:不帶表頭結點  和  帶表頭結點

不帶表頭結點的單鏈表:單鏈表的頭指針指向第一個首元結點。

 

 

head == NULL 時,為空表,否則為非空表。.

當它是非空表時,在首節點 *head 中會存放數據。

帶頭結點的只須 head 就可以訪問第一個元素。

 

帶表頭結點 的單鏈表:

 

 

 有表頭結點 單鏈表的頭指針指向頭結點。

head 指向表頭節點,

head -> data 不放元素

head -> next 指向首節點 a1

當 head -> next == NULL,為空表,否則為非空表。

以上幾句話結合截圖來看會更清晰明了。

 

單鏈表的結點結構:

① struct:這是結構體關鍵字,通過存放一組不同類型的數據,來定義一個結構。其定義形式為:

struct 結構體名稱 {

  結構體所包含的變量或數組

};

結構體是一種集合,里邊包含了多個變量或數組,它們類型可以相同,也可以不同,每個這樣的變量或數組

都稱為結構體的成員(Member)。例如我們定義一個 student 結構體:

注意!!!!大括號后邊的分號 ";" 不能少,這是一條完整的語句。

struct stu{

  char *name;// 姓名

  int num;      // 學號

  int age;       // 年齡

};

 

思考題:單鏈表中的結點有兩個域嗎?

存儲每個結點需要有兩個域,一個是數據域,另一個是指針域


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM