資料結構 實驗 串的基本操作

2021-09-06 16:15:40 字數 3134 閱讀 4122

一、實現主要功能為

1、輸入模式串、目標串

2、根據目標串生成next和nextval陣列

3、根據next或者nextval進行匹配。

二、程式截圖

三、**

1 #include 2 #include 3 #include 

4 #include 5

using

namespace

std;67

#define maxsize 1000 //

最大字元數89

struct sqstring;

1314

void getnext(sqstring t,int next) //

求出模式串t的next陣列

1523

else

24 k =next[k];25}

26}2728

void getnextval(sqstring t,int nextval) //

求出模式串t的valnext陣列

2940

else

41 k =nextval[k];42}

43}4445

void printnext(sqstring t,int next) //

輸出next陣列

4655 printf("\n"

);56 printf("

next[j]\t");

57 i=j;

58 printf("

%d\t

",next[i++]);

59for(;i8;i++)

62 printf("

\n\n

"); 63}

64}6566

void printnextval(sqstring t,int nextval) //

輸出nextval陣列

6776 printf("\n"

);77 printf("

nextval[j]\t");

78 i=j;

79 printf("

%d\t

",nextval[i++]);

80for(;i7;i++)

83 printf("

\n\n

"); 84}

85}8687

int kmpindex1(sqstring s,sqstring t,int

next)

8896

if(j>=t.length)

97return i-t.length;

98else

99return -1

;100

}101

102int kmpindex2(sqstring s,sqstring t,int

nextval)

103111

if(j>=t.length)

112return i-t.length;

113else

114return -1

;115

}116

117int menu() //

操作選單

118130

131void reply(sqstring &s,sqstring &t,int next,int nextval,int

in) //

對選單的選項進行應答

132151

printnext(t,next);

152break

;153

case

4: //

輸出模式串的nextval陣列

154if(next[0]==0

)158

printnextval(t,nextval);

159break

;160

case

5: //

使用next進行匹配

161if(s.data[0]=='\0'

)165

if(next[0]==0

)169

in =kmpindex1(s,t,next);

170if(in==-1

)171 printf("

匹配失敗!\n\n");

172else

180break

;181

case

6: //

使用nextval進行匹配

182if(s.data[0]=='\0'

)186

if(next[0]==0

)190

in =kmpindex2(s,t,nextval);

191if(in==-1

)192 printf("

匹配失敗!\n\n");

資料結構實驗 串的定義,基本操作及模式匹配

掌握這種抽象資料型別的特點 熟練掌握串的順序儲存結構表示和基本操作,並能利用這些基本操作實現串的其他各種操作。分別用兩種儲存方式實現 串的定長順序儲存實現 串的定長順序儲存結構 include include include define true 1 define false 0 define o...

資料結構之串的基本操作

1 串基本術語 空串 空串指長度為0的串,其不包含任何字元 空格串 不同於空串,它是由乙個或多個空格構成的串。雖然是空格,但在計算長度時要把空格的個數算在內 串比較 串的大小比較時以字元的ascii碼值作為依據。2 串基本操作 賦值操作 連線操作 求串長 竄的比較和求子串。3 串的儲存結構 順序儲存...

資料結構實驗 順序表的基本操作

include 1 1儲存結構 define maxsize 100 typedef struct sqlist 1 2初始化順序表並放入n個資料 void initlist sqlist l 1 3初始化順序表並放入n個資料 void listinsert sqlist l,int i,int e...