A. 為什麼每個 數組元素占 2 個位元組的內 存單元
lz
你好
首先題目說的是按列優先
那麼就是說優先存儲列
簡單地說,就是以下的存儲方式:
a[0,0]
->
a[1,0]
->
a[2,0]
->
a[3,0]
->
a[4,0]
->
a[5,0]
a[0,1]
->
a[1,1]
->
a[2,1]
->
a[3,1]
->
a[4,1]
->
a[5,1]
……
a[0,6]
->
a[1,6]
->
a[2,6]
->
a[3,6]
->
a[4,6]
->
a[5,6]
那麼按照這中存儲方式,因為a[5,5]的列標為5,那麼它前面有0~4
共有5列
每一列6個元素
也就有5*6=30個元素
再加上列表為5的列中,含有0~5(航標是5)
共有6個元素
,
但是排除a[5,5]本身
就只有5個元素
也就是30+5=35個
每一個佔5個位元組
因此a[5,5]的地址為:
1000
+
35
*
5
=
1175
希望能幫助你哈
B. 設二維數組A[3][5],每個數組元素佔用2個存儲單元,若按列優先順序進行存儲,A[0][0]的存儲地址為100
列優先則是一列一列地存儲數據,所以A[0][0]的是1005,A[1][0]的是1007,以此類推得A[2][3]的是122,也就是2*3*3+2*2=122。
C. 數組a[50][80]首地址a[0][0]為2000H,每個元素佔2個存儲單元,以行序主序順序存儲,則a[45][67]存儲地址是
數組a[50][80]每行有80列,以行序為主序,所以a[45][67]地址與a[0][0]的偏移為(45 * 80 + 67)*2=7334,其中乘以2是存儲單元大小,轉換成16進制7334=1CA6H,加上2000H,即得3CA6H
D. 二維數組A按行順序存儲,其中每個元素佔2個存儲單元。
設二維數組a[8][10]中,每個數組元素佔4個存儲單元,數組元素a[2][2]按行優先順序存放的存儲地址是1000,則數組元素a[0][0]的存儲地址是
1000-4*(2*10+2)=912
E. 二維數組[8][10],按行序優先存儲,且每個元素佔2個存儲單元,若第一個元素的存儲位置為b,則b+20的元素為__
設列寬為n,行索引為i,列索引為j,基地址指針為b,則
b[i][j]=b+(n*i+j)*2=b+20
10i+j=10
j=10-10i
又因
i=[20/n*2]=1
(計算行索引,將偏移量除列寬取整後獲得,n*2因為一個元素佔2位元組你懂得)
所以
j=10-10*1=0
因此b+20=b[i][j]=b[1][0]
F. 二維數組A[4][5]按行優先順序存儲,若每個元素佔2個存儲單元,且第一個元素A[0][0]的存儲地址為1000...
A[3][2]的地址為1000+(3*5+2)*2=1034
G. 某線性表採用順序存儲結構,若首地址為100,每個數據元素佔用2個存儲單元,則第8個元素的存儲地址為
第8個元素的存儲地址就是114和115,標稱存儲地址為114。
順序表示指的是用一組地址連續的存儲單元依次存儲線性表的數據元素,稱為線性表的順序存儲結構或順序映像(sequential mapping)。它以「物理位置相鄰」來表示線性表中數據元素間的邏輯關系,可隨機存取表中任一元素。
由此得到的存儲結構為順序存儲結構,通常順序存儲結構是藉助於計算機程序設計語言(例如c/c++)的數組來描述的。
(7)每個元素佔2個存儲單元擴展閱讀
順序存儲結構的主要優點是節省存儲空間,因為分配給數據的存儲單元全用存放結點的數據(不考慮c/c++語言中數組需指定大小的情況),結點之間的邏輯關系沒有佔用額外的存儲空間。
採用這種方法時,可實現對結點的隨機存取,即每一個結點對應一個序號,由該序號可以直接計算出來結點的存儲地址。但順序存儲方法的主要缺點是不便於修改,對結點的插入、刪除運算時,可能要移動一系列的結點。
順序存儲結構封裝需要三個屬性:
存儲空間的起始位置,數組data,它的存儲位置就是線性表存儲空間的存儲位置。
線性表的最大存儲容量:數組的長度MaxSize。
線性表的當前長度:length。
注意:數組的長度與線性表的當前長度需要區分一下:數組的長度是存放線性表的存儲空間的總長度,一般初始化後不變。而線性表的當前長度是線性表中元素的個數,是會變化的。