數據結構與算法基礎(二)之線性表的順序存儲

1、線性表(List):由零個或多個數據元素組成的有限序列。

     理解關鍵:序列(強調順序);元素有限;若元素存在多個,則第一個元素無前驅,最後一個元素無後繼,其他元素有且只有一個前驅和後繼。

2、數據類型:是指一組性質相同的值的集合及定義在此集合上的一些操作的總稱。比如說整形、浮點型、字符型這些就是數據類型。抽象數據類型就是把數據類型和相關操作捆綁到一起。

3、線性表的抽象數據類型定義。

4、線性表有兩種存儲結構:順序存儲結構和鏈式存儲結構。線性表的順序存儲結構是指用一段連續的存儲單元一次存儲線性表的數據元素;鏈式存儲結構不要求邏輯上相鄰的元素在物理位置上也相鄰。

5、線性表的插入操作:

插入算法思路大致如下:

---如果插入位置不合理,拋出異常;

---如果線性表長度大於數組長度,則拋出異常或動態增加數組容量;

---從最後一個元素開始向前便利到第i個位置,分別將它們都向後移動一個位置;

---將要插入元素填入位置i處;

---線性表長度+1;

6、線性表的刪除操作:(可以類比插入操作)

---如果刪除位置不合理,拋出異常(如線性表長度爲0則爲空表不能執行刪除;刪除元素的位置小於1或者大於線性表的長度時刪除位置有錯誤;

---取出刪除元素;

---從刪除元素位置開始遍歷到最後一個元素位置,分別將它們都向前移動一個位置;

---線性表長度-1;

7、插入和刪除操作的時間複雜度

(1)最好的情況:要插入和刪除的元素在線性表的最後一個位置,不需要移動任何一個元素,此時時間複雜度爲O(1);

(2)最壞的情況:如果要插入和刪除的元素的位置是線性表的第一個元素,那麼所有的元素都要向後移動或者向前移動,這時時間複雜度爲O(n);

(3)平均情況:時間複雜度爲O((n-1)/2),簡化之後依然是O(n)。

8、線性表的順序存儲的優缺點。

(1)優點:

---無須爲表示表中元素之間的邏輯關係而增加額外的存儲空間;

---可以快速地存取表中任意位置的元素;

(2)缺點:

---插入和刪除操作需要移動大量元素;

---當線性表長度變化較大時,難以確定存儲空間的容量;

---容易造成存儲空間的“碎片”;

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