資料結構第四章字串與陣列

2021-06-27 10:18:05 字數 4649 閱讀 9804

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;

}

4.2 多維陣列

陣列的定義

陣列是由一組型別相同的資料元素構成的有序集合,每個資料元素稱為乙個陣列元素(簡稱為元素),每個元素受n(n

≥1)個線性關係的約束,每個元素在n

個線性關係中的序號i1、i2、…、in

稱為該元素的下標,並稱該陣列為n

維陣列。

陣列的特點

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

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

陣列的基本操作

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

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

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

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

常用的對映方法有兩種:

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

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

4.3  矩陣的壓縮儲存

特殊矩陣和稀疏矩陣

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

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

壓縮儲存的基本思想是:

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

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

特殊矩陣的壓縮儲存——三角矩陣

下三角矩陣的壓縮儲存

儲存:下三角元素

對角線上方的常數——只存乙個

上三角矩陣的壓縮儲存

儲存:上三角元素

對角線上方的常數——只存乙個

特殊矩陣的壓縮儲存——對角矩陣

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

稀疏矩陣的壓縮儲存

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

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

template

struct element

;

稀疏矩陣的壓縮儲存——三元組順序表

三元組表:將稀疏矩陣的非零元素對應的三元組所構成的集合,按行優先的順序排列成乙個線性表。

稀疏矩陣的壓縮儲存——十字鍊錶

採用鏈結儲存結構儲存三元組表,每個非零元素對應的三元組儲存為乙個鍊錶結點

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:指標域,指向同一列中的下乙個三元組

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

判斷題 1 1假設模式串是abababaab,則kmp模式匹配演算法中的next j 0 1 1 2 3 4 5 6 2。t 選擇題 2 1kmp演算法下,長為n的字串匹配長度為m的字串的時間複雜度為 2分 a.o n b.o m n c.o m logn d.o n logm 作者陳英 單位南昌航...

第四章 字串與陣列

字串 定義 var list welcome to the westworld 字串長度 list.length 獲得指定位置的字元 list.charat n n是角標 獲取字串首次出現位置 list.indexof n 根據位置提取一段子串 list.slice num1,num2 字串分割成陣...

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

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