線性表是最基本、最簡單、也是最常用的一種資料結構。線性表(linear list)是資料結構的一種,一個線性表是n個具有相同特性的資料元素的有限序列。
線性表主要由順序表示或鍊式表示。在實際應用中,常以堆疊、佇列、字串等特殊形式使用。
順序表示指的是用一組位址連續的儲存單元依序儲存線性表的資料元素,稱為線性表的順序儲存結構或順序映像(sequential mapping)。它以「物理位置相鄰」來表示線性表中資料元素間的邏輯關係,可隨機存取表中任一元素。
由此得到的儲存結構為順序儲存結構,通常順序儲存結構是藉助於電腦程式設計語言(例如c/c )的陣列來描述的。
順序儲存結構的主要優點是節省儲存空間,因為分配給資料的儲存單元全用存放結點的資料(不考慮c/c 語言中數組需指定大小的情況),結點之間的邏輯關係並沒有佔用額外的儲存空間。採用此方法時,可實現對結點的隨機訪問,即每一個結點對應一個序號,由該序號可以直接計算出來結點的儲存位址。但順序儲存方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。
推薦課程:C語言教學。
線性表順序儲存結構的結構代碼:
#define MAXSIZE 20 typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; int length; // 线性表当前长度 } SqList;
#順序儲存結構封裝需要三個屬性:
存儲空間的起始位置,數組data,它的儲存位置就是線性表儲存空間的儲存位置。
線性表的最大儲存容量:陣列的長度MaxSize。
線性表的當前長度:length。
注意:陣列的長度與線性表的當前長度需要區分:陣列的長度是存放線性表的儲存空間的總長度,一般初始化後不變。而線性表的當前長度是線性表中元素的個數,是會變化的。
線性表順序儲存結構的優缺點
線性表的順序儲存結構,在儲存、讀取資料時,不管是哪個位置,時間複雜度都是O(1)。而在插入或刪除時,時間複雜度都是O(n)。
這就說明,它比較適合元素個數比較穩定,不常插入和刪除元素,而更多的操作是存取資料的應用。
優點:
無須為表示表中元素之間的邏輯關係而增加額外的儲存空間。
可以快速地存取表中任意位置的元素。
缺點:
插入和刪除操作需要移動大量元素。
當線性表長度變化較大時,難以確定儲存空間的容量。
容易造成儲存空間的「碎片」。
以上是線性表的順序儲存結構的詳細內容。更多資訊請關注PHP中文網其他相關文章!