資料結構之串

2021-10-01 20:43:03 字數 2782 閱讀 6373

串是由零個或多個字元組成的有限序列。

記為:s=「a1a2…an」 (n≥0)

其中,s是串的名,用雙引號括起來的字串行是串的值。

(1) 串的長度:串中字元的數目n。

(2) 空串(null string):長度為零的串。

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

(4) 主串:包含子串的串相應地稱為主串。

(5) 串相等:只有當兩個串的長度相等,並且各個對應位置的字元都相等,稱兩串相等。

(6) 空格串(空白串)(blank string): 由乙個或多個空格組成的串。要和「空串」區別,空格串有長度就是空格的個數。

串和一般線性表的區別:

(1) 串資料物件約束為字符集。

(2) 基本操作的物件不同,線性表以「單個元素」

為操作物件;串以「串的整體」為操作物件,操作的一般都是子串。

解決辦法:乙個結點儲存多個字元。這就是串的塊鏈儲存。

模式匹配簡單演算法

模式匹配kmp演算法

kmp演算法的思想:

主串指標不回溯,模式串向後滑動至某個位置上

利用kmp演算法求next的值:

ababaaababaa 字串長度為12,則next[12]陣列長度也為12

規定:next[1]=0,next[2]=1;

求next[3],取ab,字首字尾不相等,所以next[2]=1;

求next[4],取aba,a和a關於b對稱,字首a和字尾a相等,next[3]=1+1=2;

求next[5],取abab,ab和ab相等,所以,next[5]=2+1=3;

求next[6],取ababa,aba和aba相等,next[6]=3+1=4;

求next[7],取ababaa,s[1]=a和s[6]=a相等,next[7]=1+1=2;

求next[8],取ababaaa,s[1]=a和s[7]=a相等,next[8]=1+1=2;

求next[9],取ababaaab,s[1]s[2]和s[7]s[8]相等,next[9]=2+1=3;

求next[10],取ababaaaba,s[1]s[2]s[3]和s[7]s[8]s[9]相等,next[10]=3+1=4;

求next[11],取ababaaabab,s[1]s[2]s[3]s[4]和s[7]s[8]s[9]s[10]相等,next[11]=4+1=5;

求next[12],取ababaaababa,s[1]s[2]s[3]s[4]s[5]和s[7]s[8]s[9]s[10]s[11]相等,next[12]=5+1=6;

//使用者可以在255以內定義最大串長

typedef

unsigned

char sstring[maxstrlen +1]

;//0號單元存放串的長度 順序儲存c語言實現

typedef

struct

hstring;

#define chunksize 80

//串的塊鏈儲存

typedef

struct chunkchunk;

typedef

struct

lstring;

//若主串s中存在和串t值相同的子串返回它在主串s中第pos個字元之後第一次出現的位置;否則函式 值為0.

intindex

(char s,

char t,

int pos,

int lens,

int lent)

else}if

(j > lent)

return i - lent;

return0;

}void

get_next

(char t,

int next,

int lent)

j =*(next+j)

;//***}}

intindex_kmp

(char s,

char t,

int pos,

int lens,

int lent)

else}if

(j > lent)

//匹配成功

return i - lent;

return0;

//f返回不成功的標誌

}int

main()

;char t=

;int pos =1;

printf

("%d\n"

,index_kmp

(s,t,pos,11,

3));

return0;

}

資料結構之串

串string 由零個或多個字元組成的有限序列,又名叫字串 串的比較是通過組成串的字元之間的編碼來進行比較的,而字元的編碼指的是字元在對應的字符集中的序號 ascii是american standard code for information interchange縮寫 常用字元標準ascii編碼...

資料結構之串

串由零個或多個字元組成的有限序列,又名叫字串。串中字元數目n是成為串的長度,零個字元的串稱為空串。adt 串 string data 串中元素僅由乙個字元組成,相鄰元素具有前驅和後繼關係。operation strassign t,chars 生成乙個其值等於字串常量chars的串t。strcopy...

資料結構之串

定義 1 串是由零個或多個字元組成的有限序列,又名叫字串。2 字串簡稱串,是一種特殊的線性表,它的資料元素僅由乙個字元組成。概念 1 長度 串中字元的個數,稱為串的長度。2 空串 長度為零的字串稱為空串。3 空格串 由乙個或多個連續空格組成的串稱為空格串。4 串相等 兩個串相等,是指兩個串的長度相等...