數組
定義:數組是由類型相同的數據元素構成的有序集合,每個元素稱為數組元素,每個元素受n個線性關系的約束,每一個元素在n個線性關系中的序號\(i_{1},i_{2}.....i_{n}\)稱為該元素的下標可以通過下標訪問該數據元素。
一維數組:若線性表中數據元素為非結構的簡單元素,則稱為一維數組。
數組一旦被定義,它的維數和維界就不再改變,除了結構的初始化和銷毀之外數組只有存取元素和修改元素值的操作。
數組的順序存儲
對於二維數組而言,可有兩種存儲方式
- 以行序為主序的存儲方式
- 以列序為主序的存儲方式
假設每個數據元素占據L個存儲單元,則二維數組\(A[0....m-1,0....n-1]\) (即從下標0開始,共有m行n列)
則任意個\(a_{ij}\)的存儲位置可由下式確定
\(LOC(i,j)=LOC(0,0)+(n*i+j)*L\) (行序為主序存儲結構的公式,列序同理)
\(LOC(i,j)\)是\(a_{ij}\)的存儲位置;\(LOC(0,0)\)是\(a_{00}\)的存儲位置即是二維數組的起始存儲位置(稱基地址或基址)
特殊矩陣的壓縮存儲
定義:假若值相同的元素或者零元素在矩陣的分布有一定規律,則稱此類矩陣為特殊矩陣
特殊矩陣主要包括對稱矩陣 三角矩陣和對角矩陣
對稱矩陣
定義:若n階矩陣A中的元滿足滿足下列性質\(a_{ij}=a_{ji}\)則稱為n階對稱矩陣。
對於對稱矩陣,可以為每一個對稱矩陣分配一個存儲空間 則可將\(n^2\)個元壓縮存儲到\(n(n+1)/2\)個元的空間中,可以行序為主序存儲其下三角中的元
假設以一維數組\(sa[n*(n+1)/2]\)作為n階對稱矩陣A的存儲結構,則\(sa[k]\)和矩陣元\(a_{ij}\)之間存在對應關系:
1.當\(i>=j\) 時 \(K=i*(i-1)/2+j-1\)
2.當\(i<j\) 時 \(K=j*(j-1)/2+i-1\)
計算思路
先計算出前n-1行有幾個元(如圖中是\((n-1)*(n-1+1)/2+j-1\)然后加上前\(j-1\)列的元(這是行序為主序的,列序為主序的同理)
[假裝有圖.jpg]
三角矩陣
定義:以主對角線划分,三角矩陣有上三角矩陣和下三角矩陣兩種,上三角矩陣是指矩陣下三角(不包括對角線)中的元均為常數或零的n階矩陣,下三角矩陣與之相反。
計算思路:同對稱矩陣一樣(就這樣懂!!!)
對角矩陣
對角矩陣所有的非零元素都集中在以主對角線為中心的帶狀區域,即除了主對角線上和直接對角線上下若干對角線上的元以外,所有其他元皆為零。
包括:常見的對角矩陣有:三對角矩陣,五對角矩陣,七對角矩陣。
存儲方法:
稀疏矩陣
定義:矩陣中其非零元較零元少,且分布沒有一定的規律稱之為稀疏矩陣
稀疏矩陣的順序存儲結構---三元組順序表
三元組\((i,j,v)\)表示
i表示行數
j表示列數
v表示元素的值
【這里有圖.jpg】
稀疏矩陣的鏈式存儲結構---十字鏈表
就這樣吧!!!!!!!