陣列長度固定,元素型別一致,沒有鏈式映像,因為不能保證位址連續
陣列與線性表的區別與聯絡:
相同點: 都是相同資料型別的的資料元素組成的有限序列
不同點:①陣列要求位址連續,而線性表則無此要求
②線性表的元素是邏輯意義上不可再分的,而陣列中每乙個元素還可以是乙個陣列(多維陣列可分)
③操作上的不同,陣列一旦被定義,它的維數和維界就不再改變。因此,除了結構的初始化和銷毀之外,陣列只有訪問元素和修改元素值的操作
二維陣列的兩種儲存方式:行優先、列優先
由於計算各個元素儲存位置的時間相等,所以訪問陣列中任一元素的時間也相等,稱為隨機訪問
5.3.1特殊矩陣
①對稱矩陣
定義:n階矩陣a中aij=aji 則稱為n階對稱矩陣
壓縮儲存方案:1.只存上三角 2.只存下三角
上三角與此類似
②三角矩陣
與對稱矩陣的儲存相類似,但是一半的元素為常數,統一存到k=0的位置
③三對角矩陣
k=2i+j-2,其它k=0
④稀疏矩陣
稀疏矩陣的定義:其矩陣階數很大,非零元個數較少,零元很多,但非零元的排列沒有規律
1.三元組順序表儲存
//稀疏矩陣的三元組順序表儲存表示
#define maxsize 12500
//假設非零元個數最大為12500
typedef
struct
triple;
typedef
struct
tsmatrix;
//採用三元組表儲存表示,求稀疏矩陣的轉置矩陣
status transposesmatrix
(tsmatrix m,tsmatrix &t)
}return ok;
}//按列序轉置
時間複雜度o(nu*tu)
適用於tu/快速轉置,按行進行轉置,減少一層迴圈
//引入兩個輔助向量num[col]:表m中第col列中非0元的個數
//cpot[col]表m中第col列中第乙個非0元在t.data中的位置
status fasttransposesmatrix
(tsmatrix m,tsmatrix &t)
}return ok;
}2.行邏輯鏈結的順序表
typedef
struct
rlsmatrix;
3.十字鍊錶
廣義表是線性表的推廣,線性表的元素僅限於原子項,不能是一張表,而廣義表可以
例如
採用鏈式儲存結構
資料結構 陣列和廣義表
感覺陣列這一段沒講什麼太多的東西。先是講了下定義,就是每個維度上都有對應的前驅後繼,首尾元素例外。操作只有初始化 銷毀 取元素 修改元素。然後講了下適合用順序儲存結構,多維情況下根據下標 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...
資料結構 陣列 廣義表
陣列,是有序的元素序列。若將有限個型別相同的變數的集合命名,那麼這個名稱為陣列名。組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。用於區分陣列的各個元素的數字編號稱為下標。陣列是在程式設計中,為了處理方便,把具有相同型別的若干元素按無序的形式組織起來的一種形式。這些無序排列的...