第四章 字串 和多維陣列

2021-06-27 04:48:13 字數 2241 閱讀 6488

4.1 字串

4.1.1 字串的定義

1、字串的定義

字串:是零個或者多個字元陣列的有限序列。

空格傳:只包含空格的串。

串中所包含的字元個數稱為串的長度,長度為0的串稱為空串。

子串:字串中任意個連續的字元組成的子串行。

2、字串的比較

通過組成串的字元之間的比較實現。

4.1.2 字串的儲存結構

字串是資料元素為單個字元的線性表,一般採用順序儲存。

一般有三種方法表示串的長度:

(1)用乙個變數來表示串的長度。

(2)在串尾儲存乙個不會在串中出現的特殊字元作為字串的終結符。

(3)用陣列的0號單元存放串的長度,串值從1號單元開始存放。

4.1.3 模式匹配

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

1、樸素的模式匹配演算法bf

int bf(char s,char t)

i=0;j=0;

while((s[i]!=』\0』)&&(t[j]!=』\0』))

if(s[i]==t[j])

else 

if(t[j]== 『\0』) return(i-j+1);

else return 0;

4.2 多維陣列

4.2.1 陣列的定義

陣列是由型別相同的是資料元素構成的有序集合。

特點:資料元素本身可以具有某種結構,但屬於同一資料型別。

陣列是乙個具有固定格式和數量的資料集合,在陣列上一般不能執行插入或刪除某個陣列元素的操作。

(1)讀操作:給定一組下標,讀取相應的陣列元素。

(2)寫操作:給定一組下標,儲存或修改相應的陣列元素。

其本質對應一種操作——定址:根據一組下標定位相應的陣列元素。

4.2.2 陣列的儲存結構與定址

二維陣列的每個元素含有兩個下標,需要將二維關係對映為一維關係。對映方法:

(1)以行序為主序

(2)以列序為主序

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

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

4.3 矩陣的壓縮儲存

一些階數很高的矩陣同時在矩陣中有很多零元素——稱為稀疏矩陣。

壓縮儲存的基本思想:1)為多個值相同的元素只分配乙個儲存空間;2)對零元素不分配儲存空間。

4.3.1  對稱矩陣的壓縮儲存

對稱矩陣關於主對角線對稱,so只需要儲存下三角部分,在n*n個儲存單元裡只需要n*(n+1)/2個儲存單元,

方法:將所有元素存入陣列sa,其下標與i、j的關係:k=i*(i-1)/2+j-1

而上三角中的元素aij=aji,k=j*(j-1)/2+i-1

4.3.2  三角矩陣的壓縮儲存

相當於矩陣斜切的一半,共儲存n*(n+1)/2+1個元素,下三角中對於任意元素aij在sa中的下標k與i、j的對應關係:

i*(i-1)/2+j-1     i>=j

k=n*(n+1)/2        i上三角中:

(i-1)*(2*n-i+2)/2+j-i

k=n*(n+1)/2

4.3.3  對角矩陣的壓縮儲存

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

乙個m*n的w對角矩陣(w是占有非零元素的對角線的個數,也稱頻寬),1)將其壓縮到m行w列的二維陣列b中,aij對映為bts的關係:

t=is=j-i+2

4.3.4 稀疏矩陣的壓縮儲存

稀疏矩陣:零元素居多的矩陣

三元組:行號,列號,非零元素值。

其結構體型別:

template

struct element

int row,col;

t  item;

1、三元組順序表

儲存定義:

const int  maxterm=100;

struct sparsematrix

element  data[maxterm];

int mu,nu,tu;

2、十字鍊錶

element 為資料域,儲存非零元素對應的三元組。

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

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

第四章 字串和多維陣列

4.1字串的定義 1.串 零個或多個字元組成的有限序列 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 非空串通常記為 s s1 s2 sn 其中 s是串名,雙引號是定界符,雙引號引起來的部分是串值 si 1 i n 是乙個任意字元。1.1串的邏輯結構 子串...

第四章字串和多維陣列

4.1字串的定義 1.串 零個或多個字元組成的有限序列 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 非空串通常記為 s s1 s2 sn 其中 s是串名,雙引號是定界符,雙引號引起來的部分是串值 si 1 i n 是乙個任意字元。1.1串的邏輯結構 子串...

第四章字串和多維陣列

串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為0的串,記為 非空串通常記為 s s1 s2 sn 其中 s是串名,雙引號是定界符,雙引號引起來的部分是串值 si 1 i n 是乙個任意字元。子串 串中任意個連續的字元組成的子串行。主串 包含子串的串。子串的位置 子串的第...