資料結構——線性表及線性表順序儲存
程式碼寫的一定程度上,要再次提升的時候,是該好好的看一下資料結構和演算法了。趁著最近有時間,好好的複習一下,今天主要是線性表和線性表的順序儲存。
線性表的概念
1、 線性表是一種最基本、最簡單的的資料結構,是一種線性結構。
2、 線性表中資料元素之間的關係是一對一,是n個數據元素的有限序列。
3、 若將線性表記為(a1, ……, ai-1, ai,ai+1, ……,an),則表中ai-1領先於ai,ai領先於ai+1,稱ai-1是ai的直接前驅元素,ai+1是ai的直接後繼元素。當丨=1, 2, ……, n-1時,ai有且僅有一個直接後繼,當i=2, 3, ……, n時,ai有且僅有一個直接前驅。
所以線性表元素的個數n (n>0)定義為線性表的長度,當n=0時,稱為空表

image.png
線性表抽象資料型別定義如下

image.png
線性表的順序儲存結構
線性表的順序儲存結構是最簡單最常用的資料結構,用一段連續地址依次儲存表中的資料元素。下面我們用程式碼來實現:

image.png

image.png

執行結果如下:

image.png
線性表順序儲存的時間複雜度:
1、最好的情況,如果元素要插入到最後一個位置,或者刪除最後一個元素, 此時時間複雜度為0(1),因為不需要移動元素的。
2、最壞的情況,如果元素要插入到第一個位置或者刪除第一個元素,那就意味著要移動所有的元素向後或者向前,函式要對線性表迴圈一遍操作,所以這個時間複雜度為 0(n)。
3、平均的情況,由於元素插入到第i個位置,或刪除第i個元素,需要移動n—i個元素。根據概率原理,每個位置插入或刪除元素的可能性是相同的,也就說位置靠前,移動元素多,位置靠後,移動元素少。最終平均移動次數和最中間的那個元素的移動次數相等,為(n-1)/2。因此時間複雜度為0(n)。
線性表順序儲存的優缺點:
優點:查詢速度快,簡單、運算方便,更適合小線性表或者固定長度的線性表。
缺點:刪除和插入效率較低;儲存空間容易出現上溢;容易出現空間浪費。