第 4 章 陣列和廣義表
一、選擇題
1. 將乙個a[1..100,1..100]的三對角矩陣,按行優先存入一維陣列b[1‥298]中,a中元素a6665(即該元素下標i=66,j=65),在b陣列中的位置k為( b )。供選擇的答案:
a. 198 b. 195 c. 197
2. 二維陣列a的元素都是6個字元組成的串,行下標i的範圍從0到8,列下標j的範圈從1到10。從供選擇的答案中選出應填入下列關於陣列儲存敘述中( )內的正確答案。
(1)存放a至少需要( e )個位元組;
(2)a的第8列和第5行共佔( a )個位元組;
(3)若a按行存放,元素a[8,5]的起始位址與a按列存放時的元素( b )的起始位址一致。
供選擇的答案:
(1)a. 90 b. 180 c. 240 d. 270 e. 540
(2)a. 108 b. 114 c. 54 d. 60 e. 150
(3)a. a[8,5] b. a[3,10] c. a[5,8] d. a[0,9]
3. 設a是n*n的對稱矩陣,將a的對角線及對角線上方的元素以列為主的次序存放在一維陣列b[1..n(n+1)/2]中,對上述任一元素aij(1≤i,j≤n,且i≤j)在b中的位置為( b )。
a. i(i-l)/2+j b. j(j-l)/2+i c. j(j-l)/2+i-1 d. i(i-l)/2+j-1
4. a[n,n]是對稱矩陣,將下面三角(包括對角線)以行序儲存到一維陣列t[n(n+1)/2]中,則對任一上三角元素a[i][j]對應t[k]的下標k是(b )。
a. i(i-1)/2+j b. j(j-1)/2+i c. i(j-i)/2+1 d. j(i-1)/2+1
5. 設二維陣列a[1.. m,1..n](即m行n列)按行儲存在陣列b[1.. m*n]中,則二維陣列元素a[i,j]在一維陣列b中的下標為( a )。
a.(i-1)*n+j b.(i-1)*n+j-1 c. i*(j-1) d. j*m+i-1
6. 有乙個100*90的稀疏矩陣,非0元素有10個,設每個整型數占2位元組,則用三元組表示該矩陣時,所需的位元組數是(b )。
a. 60 b. 66 c. 18000 d. 33
7. 陣列a[0..4,-1..-3,5..7]中含有元素的個數( b )。
a. 55 b. 45 c. 36 d. 16
8. 廣義表a=(a,b,(c,d),(e,(f,g))),則下面式子的值為( d )。
head(tail(head(tail(tail(a)))))
a. (g) b. (d) c. c d. d
9. 已知廣義表: a=(a,b), b=(a,a), c=(a,(b,a),b),求下列運算的結果:
tail(head(tail(c))) =( f )。
a.(a) b. a c. a d. (b) e. b f. (a)
10. 廣義表表示式tail(((a,b),(c,d)))的操作結果是( c )。
a. (c,d) b. c,d c. ((c,d)) d. d
11. 廣義表l=(a,(b,c)),進行tail(l)操作後的結果為(d )。
a. c b. b,c c.(b,c) d.((b,c))
12. 廣義表((a,b,c,d))的表頭是( a ),表尾是(d )。
a. a b.() c.(a,b,c,d) d.(b,c,d)
二、判斷題
1. 陣列不適合作為任何二叉樹的儲存結構。( × )
2. 從邏輯結構上看,n維陣列的每個元素均屬於n個向量。( √ )
3. 稀疏矩陣壓縮儲存後,必會失去隨機訪問功能。( √ )
4. 陣列是同型別值的集合。( × )
5. 陣列可看成線性結構的一種推廣,因此與線性表一樣,可以對它進行插入,刪除等操作。( × )
6. 乙個稀疏矩陣am*n採用三元組形式表示, 若把三元組中有關行下標與列下標的值互換,並把m和n的值互換,則就完成了am*n的轉置運算。( × )
7. 二維以上的陣列其實是一種特殊的廣義表。( √ )
8. 廣義表的取表尾運算,其結果通常是個表,但有時也可是個單元素值。( × )
9. 若乙個廣義表的表頭為空表,則此廣義表亦為空表。( × )
10. 廣義表中的元素或者是乙個不可分割的原子,或者是乙個非空的廣義表。(× )
11. 所謂取廣義表的表尾就是返回廣義表中最後乙個元素。( × )
12. 廣義表的同級元素(直屬於同乙個表中的各元素)具有線性關係。( √ )
13. 對長度為無窮大的廣義表,由於儲存空間的限制,不能在計算機中實現。( √ )
14. 乙個廣義表可以為其它廣義表所共享。( √ )
三、 填空題
1.設廣義表l=((),()), 則head(l)是(1) () ___;tail(l)是(2) (()_)__;l的長度是(3)2_ _;深度是(4)_2 _。
2. 已知廣義表a=(9,7,( 8,10,(99)),12),試用求表頭和表尾的操作head( )和tail( )將原子元素99從a中取出來。
head(head(tail(tail(head(tail(tail(a)))))))
3. 廣義表的深度是__表展開後所含括號的層數 ____。
4. 廣義表(a,(a,b),d,e,((i,j),k))的長度是(1) 5,深度是(2) 3 _。
5. 已知廣義表ls=(a,(b,c,d),e),運用head和tail函式取出ls中原子b的運算是_head(head(tail(ls)))_____。
6. 廣義表a=(((a,b),(c,d,e))),取出a中的原子e的操作是: __head(tail(tail(head(tail(head(a))))))__。
四 應用題
(1)存放該陣列所需多少單元?
(2)存放陣列第4列所有元素至少需多少單元?
(3)陣列按行存放時,元素a[7,4]的起始位址是多少?
(4)陣列按列存放時,元素a[4,7]的起始位址是多少?
(1)242 (2)22 (3)s+182 (4)s+142
2. 三維陣列a[1..10,-2..6,2..8]的每個元素的長度為4個位元組,試問該陣列要佔多少個位元組的儲存空間?如果陣列元素以行優先的順序存貯,設第乙個元素的首位址是100,試求元素a[5,0,7] 的存貯首位址。
陣列佔的儲存位元組數=10*9*7*4=2520;a[5,0,7]的儲存位址=100+[4*9*7+2*7+5]*4=1184
3. 陣列,廣義表與線性表之間有什麼樣的關係?
陣列是具有相同性質的資料元素的集合,同時每個元素又有唯一下標限定,可以說陣列是值和下標偶對的有限集合。n維陣列中的每個元素,處於n個關係之中,每個關係都是線性的,且n維陣列可以看作其元素是n-1維陣列的乙個線性表。
4. 什麼是廣義表?請簡述廣義表和線性表的主要區別。
線性表中的元素可以是各種各樣的,但必須具有相同性質,屬於同一資料物件。廣義表中的元素可以是原子,也可以是子表。
廣義表中的元素,可以是原子,也可以是子表,即廣義表是原子或子表的有限序列,滿足線性結構的特性:在非空線性結構中,只有乙個稱為「第乙個」的元素,只有乙個成為「最後乙個」的元素,第一元素有後繼而沒有前驅,最後乙個元素有前驅而沒有後繼,其餘每個元素有唯一前驅和唯一後繼。從這個意義上說,廣義表屬於線性結構
資料結構複習題綱
最近把近期的部落格和生活中的一些瑣事進行了整理和歸納,從現在起,開始著手準備資料結構的複習了。同時做一些筆記與大家共同分享 進步!感謝大家的支援!記得點讚啦!第二章 鍊錶 第三章 棧和佇列 對特定問題求解步驟的一種描述,它是指令的有限序列,其中每一條指令表示乙個或多個操作 此外,乙個演算法還具有下列...
資料結構複習題(二)
一 選擇題 24分 1 下面關於線性表的敘述錯誤的是 a 線性表採用順序儲存必須占用一片連續的儲存空間 b 線性表採用鏈式儲存不必占用一片連續的儲存空間 c 線性表採用鏈式儲存便於插入和刪除操作的實現 d 線性表採用順序儲存便於插入和刪除操作的實現 2 設哈夫曼樹中的葉子結點總數為m,若用二叉鍊錶作...
資料結構複習題(五)
一 選擇題 20分 1 資料的最小單位是 a 資料項 b 資料型別 c 資料元素 d 資料變數 2 設一組初始記錄關鍵字序列為 50,40,95,20,15,70,60,45 則以增量d 4的一趟希爾排序結束後前4條記錄關鍵字為 a 40,50,20,95 b 15,40,60,20 c 15,20...