資料結構 陣列和廣義表

2021-10-01 08:49:15 字數 1821 閱讀 5324

陣列長度固定,元素型別一致,沒有鏈式映像,因為不能保證位址連續

陣列與線性表的區別與聯絡:

相同點: 都是相同資料型別的的資料元素組成的有限序列

不同點:①陣列要求位址連續,而線性表則無此要求

②線性表的元素是邏輯意義上不可再分的,而陣列中每乙個元素還可以是乙個陣列(多維陣列可分)

③操作上的不同,陣列一旦被定義,它的維數和維界就不再改變。因此,除了結構的初始化和銷毀之外,陣列只有訪問元素和修改元素值的操作

二維陣列的兩種儲存方式:行優先、列優先

由於計算各個元素儲存位置的時間相等,所以訪問陣列中任一元素的時間也相等,稱為隨機訪問

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...

資料結構 陣列 廣義表

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