第五章 多維數組和廣義表
一、基本要求、重點、難點
本章目的是介紹多維數組的邏輯結構特征及其存儲方式。特殊矩陣和稀疏矩陣的壓縮存儲方法。本章重點是熟悉多維數組的存儲方式、矩陣的壓縮存儲方式,難點是稀疏矩陣的壓縮存儲方示下實現的算法。
二、考核目標、考核要求
1.多維數組,要求達到“理解”層次
1.1多維數組的邏輯特征。
1.2多維數組的順序存儲結構及地址計算方式。
1.3數組是一種隨機存取結構的原因。
2.矩陣的壓縮存儲,要求達到“理解”層次
2.1特殊矩陣和稀疏矩陣的概念。
2.2特殊矩陣的壓縮存儲時的下標變換方法。
2.3稀疏矩陣的三元組表表示方法及有關算法。
三、練習題
1.單項選擇題
1.1二維數組M的元素是4個字符(每一個字符占一個存儲單元)組成的串,行下標i的范圍是從0到7,列下標j的范圍從0到9。則存放M須要存儲單元數為( D )
A) 360 B)480 C) 240 D) 320
凝視:由題目知:8*10*4=320。
1.2 N是一個5×8的二維數組,當N按行優先方式存儲時,表示該數組的第10個元素的是( C )
A) N[2][2] B)N[2][1] C) N[1][1] D)N[1][2]
凝視:五行八列的數組的第十個的元素為N[1][1]元素為第二行第二列的元素。
1.3 二維數組M[i][j]的元素是4個字符(每一個字符占一個存儲單元)組成的串,行下標i的范圍是從0到4,列下標j的范圍從0到5,M按行存儲時元素M[3][5]的起始地址與M按列存儲時地址地址同樣的元素是( B )
A) M[2][4] B)M[3][4] C) M[3][5] D)M[4][4]
凝視:由題知按行優先的存儲地址為:4*6*4=96。
按列優先存儲的同樣素地址元素為:M[3][4]。
1.4 稀疏矩陣一般的壓縮存儲方法有兩種,即( D )
A)二維數組和三維數組 B)三元組和散列
C)散列和十字鏈表 D)三元組和十字鏈表
1.5 常對數組進行的兩種基本操作是(C )
A)建立和刪除 B)索引和改動
C)查找和改動 D)查找和索引
1.6 設矩陣A是一個對稱矩陣,為了節省存儲空間。將其下三角部分(見圖5.1)按行序存放在一維數組SA[0..n(n+1)/2]中,對任一下三角部分元素aij(i≥j)。在一維數組SA的下標位置k的值是(B )
A)j*(j-1)/2+i-1 B)i*(i+1)/2+j
C)j*(j+1)/2+i-1 D)i*(i-1)/2+j
凝視:對於對稱矩陣來說,下標位置的值為:i*(i+1)/2+j。
2.填空
2.1已知二維數組A[m][n]採用行序為主方式存儲。每一個元素占k個存儲單元,而且第一個元素的存儲地址是LOC(A[0][0]),則A[i][j]的地址是[LOC[(A[0][0])+(n*i+j)k]]。
2.2 二維數組A[10][20]採用行序為主方式存儲,每一個元素點一個存儲單元,且A[0][0]的存儲地址是200,則A[6][12]的地址是[332]。
凝視:利用公式計算地址為:200+6*20+12=332
2.3 有一個10階對稱矩陣A,採用壓縮存儲方式(以行序為主存儲,且A[0][0]=1)。則A[8][5]的地址是[42]。
凝視:因為是對稱矩陣,利用地址計算公式為:1+8*(8+1)/2+5=42