第四章串 陣列 廣義表(4 4 4 5)

2022-09-20 17:54:09 字數 3041 閱讀 9670

目錄4.4.2陣列的順序儲存

4.4.3特殊矩陣的壓縮儲存

2.三角矩陣

3.對角矩陣

4.5廣義表

n維陣列中含有 ∏ i = 1 n b i \prod _ ^ n b_i ∏i=1nbi個資料元素,每個資料元素都受著n個關係的約束

在每個關係中,元素 a j 1 j 2 ⋯ j n ( 0 ≤ j i ≤ b i − 2 ) a _ (0 \le j _ i \le b _ i - 2) aj1j2⋯jn(0≤ji≤bi−2)都有乙個直接後繼元素。

因此,就其單個關係而言,這n個關係仍是線性關係。

與線性表一樣,所有資料元素都必須屬於同一資料型別。

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

adt array 

基本操作:

initarray (&a, n, bound i, ···, boundn)

操作結果:若維數n和各維長度合法, 則構造相應的陣列a, 並返回ok。

destroyarray (&a)

操作結果:銷毀陣列a。

value(a,&e, indexl , …,indexn)

初始條件:a是n維陣列,e為元素變數,隨後是n個下標值。

操作結果:若各下標不超界,則e賦值為所指定的 a 的元素值, 並返回ok。

assign(&a,e, indexl, …,indexn)

初始條件:a是 n 維陣列, e 為元素變扯,隨後是 n 個下標值。

操作結果:若下標不超界,則將 e 的值賦給所指定的a的元素, 並返回ok。

} adt array

陣列元素的儲存位置是其下標的線性函式,一旦確定了陣列各維的長度,ci就是常數。由千計算各 個元素儲存位置的時間相等,所以訪問陣列中任一元素的時間也相等,即陣列是一種隨機訪問結構。

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

假若值相同的元素或者零元素在矩陣中的分布有一定規律, 則稱此類矩陣為特殊矩陣。

特殊矩陣主要包括對稱矩陣、 三角矩陣和對角矩陣等, 下面我們重點討論這三種特殊矩陣的壓縮儲存。

1.1特點:

若 n 階矩陣a中的元滿足下述性質:aij=aji (1≤i,j≤n)

1.2儲存:

對於對稱矩陣,可以為每一對對稱元分配乙個儲存空間,則可將忙個元壓縮儲存到 n(n + 1)/2 個元的空間中, 不失一般性, 可以行序為

主序儲存其下三角 (包括對角線)中的元。

1.3規律:

求位置aji的位置k,滿足以下規律:

2.1特點:

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

2.2儲存:

重複元素c共享乙個元素儲存空間,共占用n(n+1)/2+1個元素空間.

2.3規律:

上三角矩陣(行優先儲存)中求位置aji的位置k,滿足以下規律:

下三角矩陣(行優先儲存)中求位置aji的位置k,滿足以下規律:

3.1特點:

在n´n的方陣中,非零元素集中在主對角線及其兩側共l(奇數)條對角線的帶狀區域內 — l對角矩陣。

![img](f:\極客班\資料結構-極客班\第四章 串、陣列和廣義表\image\20210729151349345.png)

3.2儲存:

以對角線的順序儲存。

3.3規律:

求位置aji的位置k,滿足以下規律:k=(i1+2)n+j1=(i-j+2)n+j

顧名思義,廣義表是線性表的推廣,也稱為列表。廣泛地用千人工智慧等領域的表處理語言。lisp語言,把廣義表作為基本的資料結構,就連程式也表示為一系列的廣義表。

記作ls = (a0, a1, a2, …, an-1)。

​ ①線性表的元素都是結構上不可分的單元素;

​ ②廣義表的元素可以是單元素,也可以是有結構的表;

​ ③廣義表不一定是線性表。

​ 由千廣義表中的資料元素可能為原子或廣義表,由此需要兩種結構的結點:一種是表結點, 用以表示廣義表; 一種是原子結點, 用以表示原子。從上節得知:若廣義表不空, 則可分解成表頭和表尾, 因此, 一對確定的表頭和表尾可唯一確定廣義表。 乙個表結點可由3個域組成:標誌域、 指示表頭 的指標域和指示表尾的指標域。而原子結點只需兩個域 :標誌域和值域。如圖4.15所示, 其中tag是標誌域 , 值為1時表明結點是子表, 值為0時表明結點是原子。

};} *glist //廣義表型別

; struct glnode *tp; //相當於與線性鍊錶的next,指向下乙個結點

} *glist;

第四章 串 陣列和廣義表

一 串 1.順序儲存 順序儲存 struct hstring 2.鏈式儲存 鏈式儲存 define chuncksize 80 使用者定義塊的大小,每一塊 3.串的模式匹配演算法 bf演算法 經典 和kmp演算法 速度快 bf演算法 index s,t,pos 將主串s的第pos個字元和模式t的第乙...

第四章串 陣列 廣義表(4 1 4 3 2)

目錄4.3串的型別定義 儲存結構及其運算 串 string 是由零個或者多個字元組成的有限序列,又名叫字串。一般記為s a1a2 an n 0 其中s是串的名稱,用雙引號括起來括起來的字串行是串的值,引號不屬於串的內容。ai 1 i i 可以是字母,數字或者其他字元,i就是該字元在串中的位置。串中的...

第四章 串 陣列和廣義表 順序串的基本操作

include define true 1 define false 0 define ok 1 define error 0 define overflow 2 define maxstrlen 255 typedef int status typedef int elemtype typedef...