資料結構 第四章 字串和多維陣列

2021-06-26 17:20:16 字數 4341 閱讀 7454

4.1字串

4.1.1 字串的定義

1.定義

字串是零個或多個字元組成的有限序列,只包含空格的串稱為空格串。串中所包含的字元個數稱為串的長度,長度為零的串稱為空串,記作「 」。

p非空串通常記為:

s="s1s2 …… sn "

其中:s是串名,雙引號是定界符,雙引號引起來的部分是串值 ,si(1≤i≤n)是乙個任意字元。

4.1.3 模式匹配

給定主串s="s1s2…sn"和模式t="t1t2…tm",在s中尋找t 的過程稱為模式匹配。如果匹配成功,返回t 在s中的位置;如果匹配失敗,返回0。

1.bf演算法

(1)在串s和串

t中設比較的起始下標i和

j;

(2)迴圈直到s或

t的所有字元均比較完

i.如果s[

i]=t[j],

繼續比較s和

t的下乙個字元;

ii.否則,將i和j

回溯,準備下一趟比較;

(3)如果

t中所有字元均比較完,則匹配成功,返回匹配的起始比較下標;否則,匹配失敗,返回0;

程式如下:

intbf(

char s[ ], char t[ ]

)

else

}

if (

t[j]=='\0'

)return(i

-j+1

);

else return 0;

}

2.kmp演算法

基本思想:主串不進行回溯。

(1)在串s和串t中分別設比較的起始下標i和j;

(2)迴圈直到s或t的所有字元均比較完

i.如果s[i]=t[j],繼續比較s和t的下乙個字元;否則

ii.將j向右滑動到next[j]位置,即j=next[j];

iii.如果j=-1,則將i和j分別加1,準備下一趟比較;

(3)如果t中所有字元均比較完畢,則返回匹配的起始下標;否則返回0;

4.2 多維陣列

4.2.1 陣列的定義

陣列是由一組型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素(簡稱為元素),每個元素受n(n≥1)個線性關係的約束,每個元素在n個線性關係中的序號i1、i2、…、in稱為該元素的下標,並稱該陣列為 n

維陣列。

陣列的特點:

1.元素本身可以具有某種結構,屬於同一資料型別;

2.陣列是乙個具有固定格式和數量的資料集合。

陣列的基本操作:

⑴ 訪問:給定一組下標,讀出對應的陣列元素;

⑵ 修改:給定一組下標,儲存或修改與其相對應的陣列元素。

訪問和修改操作本質上只對應一種操作——定址

4.2.2 陣列的儲存結構與定址----二維陣列

常用的對映方法有兩種:

(1)按行優先:先行後列,先儲存行號較小的元素,行號相同者先儲存列號較小的元素。

(2)按列優先:先列後行,先儲存列號較小的元素,列號相同者先儲存行號較小的元素。

4.3 矩陣的壓縮儲存

特殊矩陣:矩陣中很多值相同的元素並且它們的分布有一定的規律。

稀疏矩陣:矩陣中有很多零元素。

壓縮儲存的基本思想是:

⑴ 為多個值相同的元素只分配乙個儲存空間;

⑵對零元素不分配儲存空間。

4.3.1 對稱矩陣的壓縮儲存

對稱矩陣特點:aij=aji。

對於下三角中的元素aij(i≥j),在陣列sa中的下標k與i、j的關係為:k=i×(i-1)/2+j -1。

上三角中的元素aij(i<j),因為aij=aji,則訪問和它對應的元素aji即可,即:k=j×(j-1)/2+i-1。

4.3.2 三角矩陣的壓縮儲存

只儲存上三角(或下三角)部分的元素。

矩陣中任一元素aij在陣列中的下標k與i、j的對應關係:

對於上三角矩陣,可以按行儲存上三角部分,最後儲存對角線下方的常數;下三角矩陣則相似,要儲存下三角中的元素和對角線上方的常數。

4.3.3 對角矩陣的壓縮儲存

對角矩陣:所有非零元素都集中在以主對角線為中心的帶狀區域中,除了主對角線和它的上下方若干條對角線的元素外,所有其他元素都為零。

元素aij在一維陣列中的序號

=2 + 3(i-2)+(j-i+ 2)

=2i+ j -2

∵一維陣列下標從0開始

∴元素aij在一維陣列中的下標

=2i+ j -3。

4.3.4 稀疏矩陣的壓縮儲存

1.三元組順序表

將稀疏矩陣中的每個非零元素表示為:

(行號,列號,非零元素值)——三元組。

定義三元組:

template datatype

>

struct

element;

三元組表

:將稀疏矩陣的非零元素對應的三元組所構成的集合,

按行優先的順序排列成乙個線性表。

三元組順序表儲存結構定義:

const int

maxterm

=100;

template datatype

>

struct

sparsematrix

;

2.十字鍊錶

row:儲存非零元素的行號

col:儲存非零元素的列號

item:儲存非零元素的值

right:指標域,指向同一行中的下乙個三元組

down:指標域,指向同一列中的下乙個三元組

資料結構 第四章 字串和多維陣列

第四章 字串和多維陣列 4.1 字串 4.1.1 字串的定義 1.字串的定義 字串是零個或多個組成的有限序列,只包含空格的串成為空格串。串中所包含的字元個數成為串的長度,長度為0的串為空串,記作 乙個非空串通常該記作 s s1,s2 sn 字串中任意個連續的字元組成的子串行稱為該串的子串,相應地,包...

資料結構第四章字串和多維陣列

1.字串的定義 字串是零個或多個字元組成的有限序列,只包含空格的稱為空格串。串中所包含的字元個數稱為串的長度,長度為零的串稱為空串。字串中任意個連續的字元組成的子串行稱為該串的子串,包含子串的串稱為主串。子串的第乙個字元在主串中的序號稱為子串在主串中的位置。2.字串的比較 給定兩個字串 x x1x2...

《資料結構》第四章 字串和多維陣列 實驗

資料結構 實驗四 字串和多維陣列 實驗 一 實驗目的 鞏固字串和多維陣列相關知識,學會運用靈活應用。1.回顧字串和多維陣列的邏輯結構和儲存操作特點,字元和陣列的物理儲存結構和常見操作。2.學習運用字串和和陣列的知識來解決實際問題。3.進一步鞏固程式除錯方法。4.進一步鞏固模板程式設計。二 實驗時間 ...