資料結構 陣列和廣義表

2021-10-04 12:45:59 字數 1249 閱讀 4061

例:設有一-個二維陣列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)=loc(0,0)+2n+2=644+**2n+2**=676.

n=(676-2-644)/2=15

loc(3,3)=loc(0,0)+3*15+3=644+45+3=692.

不適宜常規二維陣列儲存的矩陣:值相同的元素很多,且呈某種規律分布;零元素多。

壓縮儲存:為多個相同的非零元素,只分配乙個儲存空間;對零元素不分配儲存空間。

特殊矩陣:對稱矩陣,對角矩陣,三角矩陣,稀疏矩陣(非零元素個數較少)

a ij = a ji

【儲存方法】只儲存下(或上)三角(包括主對角線)的資料元素,佔n(n+1)/2個元素空間

某個元素前面有多少個元素,個數就是該元素在一維陣列中的下標

a nj =(n - 1)*n / 2 + j (j從0開始)

對角線以下或以上的資料元素(不包括對角線)全部為常數c。

非零元素集中在以主對角線為中心的帶狀區域中,區域外的值全為0

【儲存方法】二維矩陣

三元組(i,j,a ij)唯一確定矩陣的乙個非零元素

為更可靠描述,再加乙個總體資訊在下標為0的位置儲存:總行數,總列數,非零元素的總個數

優點:非零元在表中按行序有序儲存,便於進行依行順序處理的矩陣運算

缺點:不能隨機訪問。若按行號訪問某一行的非零元,需要從頭開始進行查詢

優點:靈活地插入因運算而產生的新的非零元素,刪除新元素,實現矩陣的各種運算

行頭指標:指向每一行的第乙個非零元素;

列頭指標:指向每一列的第乙個非零元素

線性表中每乙個元素的型別都是相同的,

而廣義表中每乙個元素的型別不一定相同,每乙個元素可以是乙個原子(單一字元),也可以是乙個廣義表。

廣義表可以是乙個遞迴的表,遞迴表的深度是無窮值,長度是有限值

表頭:若廣義表非空,第乙個元素就是表頭

(表頭可用是原子,也可以是子表)

表尾:除表頭之外的其他元素組成的表。

(表尾不是最後乙個元素,而是乙個子表)

長度:最外層包含的元素個數

深度:廣義表展開後包含括號的重數

原子深度為0,空表深度為1

資料結構 陣列和廣義表

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

資料結構 陣列和廣義表

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

資料結構 陣列 廣義表

陣列,是有序的元素序列。若將有限個型別相同的變數的集合命名,那麼這個名稱為陣列名。組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。用於區分陣列的各個元素的數字編號稱為下標。陣列是在程式設計中,為了處理方便,把具有相同型別的若干元素按無序的形式組織起來的一種形式。這些無序排列的...