資料結構(五) 陣列和廣義表

2021-07-25 11:19:39 字數 2656 閱讀 4927

恩,最近幾天,為了應付六級,每天在專心看《game of throne》,沉迷無法自拔,所以複習進度就慢了下了。【啊啊啊,決定痛改前非,專心複習!】

陣列和廣義表這塊知識實話講不是很重要,但是考試是會考的!

設二維陣列a[0…m-1][0…n-1]按行優先順序儲存在記憶體中,第乙個元素的位址為p,每個元素佔k個位元組,則元素aij的位址為( )。

a.p +[i*n+j]*kb.p+[(i-1)*n+j-1]*kc.p+[(j-1)*n+i-1]*kd.p+[j*n+i-1]*k

答案:a

只找到了,按列優先順序儲存,它們的原理是相同的,在這裡務必注意陣列下標是從0開始的

已知二維陣列a10×10中,元素a20的位址為560,每個元素佔4個位元組,則元素a10的位址為( )。

a.520

b.522

c.524

d.518

答案:a

畫乙個這樣的圖,a20的位址是560,那有20-10=10和每個元素佔4個位元組可得a10=560-10*4=520

若陣列a[0…m][0…n]按列優先順序儲存,則aij位址為( )。

a.loc(a00)+[j*m+i]

b. loc(a00)+[j*n+i]

c.loc(a00)+[(j-1)*n+i-1]

d. loc(a00)+[j*(m+1)+i+1]

答案: d

設有廣義表d=(a,b,d),其長度為( ),深度為( )。

a.無窮大

b.3

c.2

d.5

答案:b a

就這樣無限迴圈下去,但是長度始終是3

廣義表a=(a),則表尾為( )。

a.a

b.(( ))

c.空表

d.(a)

答案:c

當廣義表ls非空時,稱第乙個元素a1為ls的表頭(head),稱其餘元素組成的表(a2,…,ai,…,an)為ls的表尾(tail)

由定義可知,a為表頭,表尾尾空表

廣義表a=((x,(a,b)),(x,(a,b),y)),則運算gethead(gethead(gettail(a)))的結果為( )。

a.x

b.(a,b)

c.(x,(a,b))

d.a

答案:a

gethead就是獲取表頭,gettail就是獲取表尾。

gethead(gethead(gettail(a)))按照運算順序,先獲取a的表尾(x,(a,b),y),再獲取它的表頭x,再獲取它的表頭x

乙個廣義表的表頭總是乙個( )。

a.廣義表

b.元素

c.空表

d.元素或廣義表

答案:d

乙個廣義表的表尾總是乙個( )。

a.廣義表 b.元素 c.空表 d.元素或廣義表

答案:a

一維陣列的邏輯結構是( ),儲存結構是( );對於二維或多維陣列,分為( )和( )兩種不同的儲存方式。

答案:線性結構,順序結構,以行為主序,以列為主序

對於乙個二維陣列a[m][n],若按行序為主序儲存,則任一元素a[i][j]相對於a[0][0]的位址為( )。

答案:i×n+j個元素位置

還是這個圖呀!把列換成行,自己想【哈哈】

乙個稀疏矩陣為

答案:((1,3,2),(2,1,3),(3,3,-1),(3,4,5))

我給你做個很簡單的解釋,(1,3,2),就是廣義表第一行第三列為2

假定陣列a[n]的n個元素中有多個零元素,編寫演算法將a中所有的非零元素依次移到a的前端。

void move(int a,int n)}}

資料結構 陣列和廣義表

感覺陣列這一段沒講什麼太多的東西。先是講了下定義,就是每個維度上都有對應的前驅後繼,首尾元素例外。操作只有初始化 銷毀 取元素 修改元素。然後講了下適合用順序儲存結構,多維情況下根據下標 j1 j2 j3 jn 找到對應畫素的儲存位置 cn l,ci 1 bi ci,loc loc基址 ciji l...

資料結構 陣列和廣義表

陣列長度固定,元素型別一致,沒有鏈式映像,因為不能保證位址連續 陣列與線性表的區別與聯絡 相同點 都是相同資料型別的的資料元素組成的有限序列 不同點 陣列要求位址連續,而線性表則無此要求 線性表的元素是邏輯意義上不可再分的,而陣列中每乙個元素還可以是乙個陣列 多維陣列可分 操作上的不同,陣列一旦被定...

資料結構 陣列和廣義表

例 設有一 個二維陣列a m n 按行優先順序儲存,假設a 0 0 存 放位置在644 10 a 2 2 存放位置在676 10 每個元素佔乙個空間,問a 3 3 10 存放在什麼位置?腳注10表示用10進製表示。設陣列元素a i j 存放在起始位址為loc i,j 的儲存單元中 loc 2,2 l...