您好,登錄后才能下訂單哦!
線性表從物理結構上分,有兩種存儲結構,一種是順序存儲結構,另一種是鏈式存儲。這里呢,先講一下順序存儲,畢竟,這種存儲方式比較簡單。
那么什么是順序存儲結構呢?以下,是書中關于線性表順序存儲的標準定義:
線性表的順序存儲結構,指的是用一段地址連續的存儲單元依次存儲線性表的數據元素。
通過這段標準定義,可以很容易的想到,順序存儲就是通過數組這樣的線性存儲結構來存放相關元素。因為,數組就是一段地址連續的存儲單元。
那么關于順序存儲結構,有哪些注意點呢?
1.存儲空間大小即數組最大長度。很明顯,為了能夠存儲夠相關的元素,一定要有適當的空間(MAXSIZE)。
2.存儲位置。存儲空間是一段連續的地址,所以,數組的首地址就是該線性表的存儲位置(data)。
3.當前線性表的長度(length)。
以下,線性表的順序存儲結構代碼:
#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。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。