陣列和廣義表

2021-08-21 07:54:44 字數 1426 閱讀 2486

陣列一旦被定義,它的維數和維界就不再改變

採用順序結構儲存結構表示陣列

二維陣列的儲存方式:以行序為主(c語言);以列序為主

loc[i, j] == loc(0, 0) + (b2*i + j )*l

陣列是隨機儲存結構,由於計算各個元素儲存位置的時間相等,所以儲存陣列中任一元素的時間也相等。

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

特殊矩陣:值相同的元素或零元素在矩陣分布中具有一定規律,反之為稀疏矩陣。

2.1    特殊矩陣

對稱矩陣:將個元素壓縮至n(n+1)/2個儲存空間

下三角矩陣(上)

對角矩陣

2.2    稀疏矩陣

在m*n的矩陣中,有t個元素不為0,矩陣的稀疏因子:

該值<=0.05時,稱為稀疏矩陣

稀疏矩陣的壓縮儲存: 記錄非零元的行列位置以及值

線性表的推廣

廣義表:

n 是廣義表ls的長度

在廣義表中,ai可以是單個元素(被稱為原子),也可以是廣義表(成為子表)。

當ls非空時,a1是表頭,其餘的(a2,…an)是ls的表尾。

3.1    廣義表的儲存結構

採用鏈式儲存結構,每個資料元素可用乙個節點表示。

兩種結構的節點:

1)  表結點:表示列表,分為標識域,指示表頭的標誌域,指示表尾的標誌域。

2)  原子結點:表示原子,分為標誌域和值域。

也可採用另一種方式儲存廣義表,在此不贅述。

3.2    廣義表的遞迴演算法

3.2.1   廣義表的深度

廣義表的深度定義為括號的重數。

若是原子,定義其深度為0,ls的深度為各個的深度中最大值加1.

空表也是廣義表,其深度為1。

將該問題轉換為遞迴問題,得到遞迴條件以及邊界:

dep(ls)= 1 ,ls為空

dep(ls)= 0 ,ls為原子

總結:dep(ls)= 1+max  ,n>=1

3.2.2   複製廣義表

乙個非空廣義表均可分解為表頭和表尾,即一對確定的表頭和表尾可惟一確定乙個廣義表。

複製乙個廣義表只要分別複製表頭和表尾,然後合成即可

3.2.3   建立廣義表的儲存結構

兩種方法:

1.      將廣義表分為表頭和表尾

2.      將廣義表看成含有n個並列子表(將原子也看成表)的表

陣列和廣義表

一 陣列 陣列是一組型別相同的資料元素構成。有一維陣列 二維陣列 n 維陣列。一般實現時,可以過載操作符,比較方便一點。二 矩陣 1 矩陣的加減,需要兩個矩陣擁有相同的行列數才可以。對應各個位置分別進行計算 2 矩陣的相乘,需要第乙個陣的列數等於第二個的行數。如c 0,0 a 的第一列分別乘以 b的...

陣列和廣義表

陣列和廣義錶可看成是一種特殊的線性表,其特殊在於 表中的元素本身也是一種線性表。記憶體連續。根據下標在o 1 時間讀 寫任何元素。二維陣列,多維陣列,廣義表 樹 圖都屬於非線性結構 陣列的順序儲存 行優先順序 列優先順序。陣列中的任一元素可以在相同的時間記憶體取,即順序儲存的陣列是乙個隨機訪問結構。...

串 陣列和廣義表

1 串是內容受限的線性表,它限定了表中的元素為字元。申有兩種基本儲存結構 順序儲存和鏈式儲存,但多採用順序儲存結構。串的常用演算法是模式運配演算法,主要有bf演算法和kmp演算法。bf演算法實現簡單,但存在回溯,效率低。時間復豪度為o m n kmp演算法對bf演算法進行改進,消除回溯,提高了效率,...