線性表的順序存儲結構

   線性表從物理結構上分,有兩種存儲結構,一種是順序存儲結構,另外一種是鏈式存儲。這裏呢,先講一下順序存儲,畢竟,這種存儲方式比較簡單。
數組

   那麼什麼是順序存儲結構呢?如下,是書中關於線性表順序存儲的標準定義:
ide

線性表的順序存儲結構,指的是用一段地址連續的存儲單元依次存儲線性表的數據元素。
編碼

        經過這段標準定義,能夠很容易的想到,順序存儲就是經過數組這樣的線性存儲結構來存放相關元素。由於,數組就是一段地址連續的存儲單元。
spa

        那麼關於順序存儲結構,有哪些注意點呢?
內存

  1.存儲空間大小即數組最大長度。很明顯,爲了可以存儲夠相關的元素,必定要有適當的空間(MAXSIZE)。
it

  2.存儲位置。存儲空間是一段連續的地址,因此,數組的首地址就是該線性表的存儲位置(data)。
class

  3.當前線性表的長度(length)。
List

如下,線性表的順序存儲結構代碼:數據類型

#define MAXSIZE 20              //the max length of the list

typedef int ElemType;

struct SqList{
    
    ElemType data[MAXSIZE];
    int length; 

};

  關於數組長度與線性表長度。數組長度指的是可以存儲元素的最大的空間量的多少,這個值是個常量,它是不變的。而線性表長度,指的是,當前線性表的元素的個數,它是一個能夠變化的量。
數據

  既然線性表的元素是藉助數組來作的存儲。那麼,就不得不注意元素的地址。在內存中,每一塊內存都有相應的地址編碼來標識這塊區域。而且,在數組中,第一個元素的下標位置爲0,由於數組中的計數是從0開始的。也就是說,第i個位置的元素,其在數組中的存儲位置爲i-1。而且,因爲不一樣的數據類型所佔用的地址不一樣。在32位計算機中,int類型的數據佔4個字節,char類型的數據佔1個字節。假設,數組的數據類型是int型,那麼,數組中的每個元素都是int型的,也就是,每個元素所佔地址大小都是4字節。那麼獲取第i+1個元素的地址,爲:LOC(ai+1) = LOC(ai) + 4;若數組的數據類型爲c類型,那麼第i+1個元素的地址爲:LOC(ai+1) = LOC(ai) + c。

因此,對於,第i個數據元素ai的存儲位置能夠由a1推算得出:LOC(ai) = LOC(a1) + ( i - 1 ) * c。

相關文章
相關標籤/搜索