
線性表從物理結(jié)構(gòu)上分,有兩種存儲結(jié)構(gòu),一種是順序存儲結(jié)構(gòu),另一種是鏈?zhǔn)酱鎯?。這里呢,先講一下順序存儲,畢竟,這種存儲方式比較簡單。

那么什么是順序存儲結(jié)構(gòu)呢?以下,是書中關(guān)于線性表順序存儲的標(biāo)準(zhǔn)定義:
線性表的順序存儲結(jié)構(gòu),指的是用一段地址連續(xù)的存儲單元依次存儲線性表的數(shù)據(jù)元素。
通過這段標(biāo)準(zhǔn)定義,可以很容易的想到,順序存儲就是通過數(shù)組這樣的線性存儲結(jié)構(gòu)來存放相關(guān)元素。因為,數(shù)組就是一段地址連續(xù)的存儲單元。
那么關(guān)于順序存儲結(jié)構(gòu),有哪些注意點(diǎn)呢?
1.存儲空間大小即數(shù)組大長度。很明顯,為了能夠存儲夠相關(guān)的元素,一定要有適當(dāng)?shù)目臻g(MAXSIZE)。
2.存儲位置。存儲空間是一段連續(xù)的地址,所以,數(shù)組的首地址就是該線性表的存儲位置(data)。
3.當(dāng)前線性表的長度(length)。
以下,線性表的順序存儲結(jié)構(gòu)代碼:
#define MAXSIZE 20 //the max length of the list
typedef int ElemType;
struct SqList{
ElemType data[MAXSIZE];
int length;
};關(guān)于數(shù)組長度與線性表長度。數(shù)組長度指的是能夠存儲元素的大的空間量的多少,這個值是個常量,它是不變的。而線性表長度,指的是,當(dāng)前線性表的元素的個數(shù),它是一個可以變化的量。
既然線性表的元素是借助數(shù)組來做的存儲。那么,就不得不注意元素的地址。在內(nèi)存中,每一塊內(nèi)存都有相應(yīng)的地址編碼來標(biāo)識這塊區(qū)域。并且,在數(shù)組中,第一個元素的下標(biāo)位置為0,因為數(shù)組中的計數(shù)是從0開始的。也就是說,第i個位置的元素,其在數(shù)組中的存儲位置為i-1。并且,由于不同的數(shù)據(jù)類型所占用的地址不同。在32位計算機(jī)中,int類型的數(shù)據(jù)占4個字節(jié),char類型的數(shù)據(jù)占1個字節(jié)。假設(shè),數(shù)組的數(shù)據(jù)類型是int型,那么,數(shù)組中的每一個元素都是int型的,也就是,每一個元素所占地址大小都是4字節(jié)。那么獲取第i+1個元素的地址,為:LOC(ai+1) = LOC(ai) + 4;若數(shù)組的數(shù)據(jù)類型為c類型,那么第i+1個元素的地址為:LOC(ai+1) = LOC(ai) + c。
所以,對于,第i個數(shù)據(jù)元素ai的存儲位置可以由a1推算得出:LOC(ai) = LOC(a1) + ( i - 1 ) * c。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。