




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)六串的模式匹配.實(shí)驗(yàn)?zāi)康?1)利用順序結(jié)構(gòu)存儲(chǔ)串,并實(shí)現(xiàn)串的匹配算法。掌握簡(jiǎn)單模式匹配思想、熟悉KMP算法。.實(shí)驗(yàn)內(nèi)容(1)用鍵盤(pán)輸入初始化目標(biāo)串和模式串,通過(guò)簡(jiǎn)單模式匹配算法實(shí)現(xiàn)串的模式匹配,匹配成功后要求輸出模式串在目標(biāo)串中的位置。設(shè)計(jì)并調(diào)試KMP算法,并與簡(jiǎn)單模式匹配算法進(jìn)行比較。.實(shí)驗(yàn)要求(1)根據(jù)實(shí)驗(yàn)內(nèi)容編寫(xiě)程序,上機(jī)調(diào)試并獲得運(yùn)行結(jié)果(2)撰寫(xiě)實(shí)驗(yàn)報(bào)告.關(guān)鍵操作思路與算法本次實(shí)驗(yàn)將會(huì)使用兩種方法進(jìn)行模式匹配,分別是簡(jiǎn)單的模式匹配算法和更加快速的模式匹配算法(KMP算法)。定義串結(jié)構(gòu)并創(chuàng)建串這里定義串使用線(xiàn)性結(jié)構(gòu)創(chuàng)建,串結(jié)構(gòu)包含data數(shù)組與長(zhǎng)度len,創(chuàng)建串時(shí)首先輸入串的長(zhǎng)度,
2、再依次根據(jù)長(zhǎng)度來(lái)輸入串的內(nèi)容,這里用到了新知識(shí)fflush(stdin)函數(shù),這個(gè)函數(shù)的作用是清除緩存區(qū),因?yàn)槊看屋斎胫蠖紩?huì)按一次空格,如果不加這個(gè)或者是加getchar()那個(gè)空格字符就會(huì)被下一次的scanf()所接受typedefstructdatatypedataMAXNUM;intlen;SString;/創(chuàng)建一個(gè)串voidSStringCreate(SString*t)inti,j;charc;printf(請(qǐng)輸入串的長(zhǎng)度:”);scanf(%d,&j);t-len=j;for(i=0;ilen;i+)printf(請(qǐng)輸入第4個(gè)字符:,(i+1);fflush(stdin);sca
3、nf(%c,&c);t-datai=c; .5.源代碼#include#include#include#include#include#include#include#include#defineTRUE1#defineFALSE0#defineOK1#defineERROR-1#defineINFEASIBLE-1#defineMAXNUM100typedefintdatatype;typedefstructdatatypedataMAXNUM;intlen;String;建立串voidStringCreate(String*s)inti,j;charc;printf(請(qǐng)輸入字符串長(zhǎng)度:”)
4、;scanf(%d,&j);for(i=0;idatai=c;s-datai=0;38.39.s-len=j;/輸出串voidStringPrint(String*s)TOC o 1-5 h zinti;for(i=0;ilen;i+)printf(%c”,s-datai);printf(n);判斷是否為空字符串intStringIsEmpty(String*s)if(s-len=0)TOC o 1-5 h zreturnTRUE;elsereturnERROR;求字符串長(zhǎng)度intStringLenth(String*s)printf(字符串長(zhǎng)度為:%dn,s-len);return(s-le
5、n);復(fù)制串voidStringCopy(String*s,String*t)將串t的值復(fù)制到串s中74.inti;75.for(i=0;ilen;i+)76.77.s-datai=t-datai;s-len=t-len;串比較intStringCompare(String*s,String*t)若串s=t,則返回0;若st,則返回正數(shù),若st,則返回負(fù)數(shù)127.127.TOC o 1-5 h zinti;for(i=0;ilen&ilen;i+)if(s-datai!=t-datai)return(s-datai-t-datai);return(s-len-t-len);/串連接intStr
6、ingconcat(String*s,String*t)/將串t連接到串s的后面97.inti,flag;98.if(s-len+t-lenlen;ilen+t-len;i+)101.102.s-datai=t-datai-s-len;103.104.s-len+=t-len;105.flag=TRUE;106.107.else108.109.if(s-lenlen;idatai=t-datai-s-len;114.115.s-len=MAXNUM;116.flag=FALSE;117.118.else串s的長(zhǎng)度等于MAXNUM,串t不能被連接119.120.flag=0;121.122.12
7、3.returnflag;/插入串intStringInsert(String*s,intpos,String*t)128.inti;129.if(poss-len)/130.131.returnERROR;132.133.if(s-len+t-lenlen+t-len-1;ilen+pos;i-136.137.s-datai=s-datai-t-len;138.139.for(i=0;ilen;i+)140.141.s-datai+pos=t-datai;142.143.s-len=s-len+t-len;47.else148.149.if(pos+t-lent-l
8、en+pos-1;i-)152.153.s-datai=s-datai-t-len;154.155.for(i=0;ilen;i+)156.157.s-datai+pos=t-datai;158.159.s-len=MAXNUM;160.161.162.else163.164.for(i=0;idatai+pos=t-datai;167.168.s-len=MAXNUM;169.170.171.-)95
9、.00014.215.returnOK;/刪除串intStringDelete(String*s,intpos,intlen)inti;if(pos(s-len-len)returnFALSE;for(i=pos+len-1;ilen;i+)s-datai-len=s-datai;s-len-=len;returnTRUE;簡(jiǎn)單模式匹配算法()intStringBF(String*s,String*t)inti=0,j=0;while(ilen-1)&jl
10、en-1)if(s-datai=t-dataj)i+;j+;elsei=i-j+1;j=0;if(j(t-len-1)return(i-t-len+1);elsereturnFALSE;/KMP模式匹配算法()/1.計(jì)算子串的next()voidGetNext(intnext,String*t)216.inti=1,j=0;217.next0=-1;218.next1=0;219.while(ilen)220.221.if(j=0|t-datai=t-dataj)222.223.+i;224.+j;225.nexti=j;226.227.else228.j=nextj;229.230.231.
11、2.通過(guò)next值來(lái)計(jì)算子串出現(xiàn)的具體位置232.intIndexKmp(String*s,String*t,intpos,intnext)233.234.inti=pos,j=1;235.while(ilen-1&jlen-1)236.237.if(j=0|s-datai=t-dataj)238.239.+i;240.+j;241.242.else243.j=nextj;244.245.if(jt-len-1)246.return(i-t-len+1);247.else248.returnFALSE;249.250./主函數(shù)251.intmain()252.253.intnext100;25
12、4.String*s,*t;255.s=(String*)malloc(sizeof(String);256.t=(String*)malloc(sizeof(String);257.intchoice,begin,end,len,a,pos,i;258.while(TRUE)259.260.printf(t請(qǐng)輸入操作數(shù):n);261.262.printf(t1、建立串;n);printf(t2、輸出串;n);263.264.printf(t3、求串長(zhǎng)度;n);printf(t4、刪除部分字符串;n);265.266.printf(t5、簡(jiǎn)單的BF模式匹配算法n);printf(t6、效率更高
13、的KMP模式匹配算法n);267.268.269.printf(t7、退出;n);scanf(%d”,&choice);switch(choice)270.271.case1:272.273.StringCreate(s);break;case2:274.275.StringPrint(s);break;case3:276.277.StringLenth(s);break;case4:278.279.printf(請(qǐng)輸入刪除起始位置:);scanf(%d”,&begin);280.281.printf(請(qǐng)輸入刪除末尾位置:“);scanf(%d”,&end);282.283.len=end-b
14、egin+1;StringDelete(s,begin,len);284.285.printf(新串為:);StringPrint(s);286.287.break;case5:288.289./建立子串StringCreate(t);290.a=StringBF(s,t);291.292.293.printf(匹配位置為:%dn,a);break;case6:294.295.296./建立子串StringCreate(t);GetNext(next,t);297.298.for(i=0;ilen;i+)printf(t%d,nexti);299.300.printf(n);pos=0;301
15、.a=IndexKmp(s,t,pos,next);302.303.printf(匹配位置為:%dn,a);break;case7:return0;TOC o 1-5 h zgetchar();return0;6.測(cè)試圖psE:vscodec&:加總式楊正宇8dMext總nsicin八rts-v&sdjqkifg/lk,Me-stdaut=Microstrft-MlEi)gine-out-zli5hzlzc.Oyg*1-stderrExe=c:mingw64birigdb,exe1iiiterpreterni1請(qǐng)輸入操作數(shù),1、建立串;L輸出串;不求串長(zhǎng)度;取刪除部分字符串;5、簡(jiǎn)單的B喉式兀
16、配算法入效率更高的KMP模式匹配算法7.退出;1請(qǐng)輸入字符用長(zhǎng)度:5請(qǐng)痂入第1個(gè)字符1請(qǐng)痂入第2個(gè)字符2靖輸入第士個(gè)字符3請(qǐng)輸入第4個(gè)字符4靖輸入第5個(gè)字符5請(qǐng)輸入操作數(shù);lx建立串;3輸出串;3.求串長(zhǎng)度;4、刪除部分字符串;5、簡(jiǎn)單的E喉式匹配算法6、效率更高的KMP模式匹配算法7、退出;212545請(qǐng)輸入操作數(shù)二1.建立串;2、輸出串73、求串長(zhǎng)度;4刪除部分字符串;5”簡(jiǎn)單的BF模式匹配算法6效率更高的KMP模式匹配算法7、退出;字符串長(zhǎng)度為二5請(qǐng)輸入操作數(shù);1.建立串;2、輸出率;3“求串長(zhǎng)度:4、刪除部分字符串,5、簡(jiǎn)單的SF模式匹配算法6效率更高的心1P模式匹配算法7“退出:請(qǐng)輸入刪除起始位置:2請(qǐng)輸入刪除末尾位
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 考試考務(wù)協(xié)議書(shū)
- 暫停省內(nèi)旅游協(xié)議書(shū)
- 父母出錢(qián)買(mǎi)房協(xié)議書(shū)
- 資金轉(zhuǎn)入?yún)f(xié)議書(shū)
- 線(xiàn)下外部施工協(xié)議書(shū)
- 隱形股權(quán)協(xié)議書(shū)
- 合同協(xié)議書(shū)的含義包括
- 生態(tài)茶園承包與茶葉加工銷(xiāo)售合作協(xié)議
- 北京市離婚協(xié)議書(shū)起草與簽訂要點(diǎn)解析
- 米機(jī)設(shè)備租賃合同協(xié)議
- 2025年中考物理總復(fù)習(xí)《壓強(qiáng)》專(zhuān)項(xiàng)測(cè)試卷含答案
- 音樂(lè)可視化藝術(shù)-洞察分析
- 心肌三項(xiàng)臨床意義
- 2025新人教版英語(yǔ)七年級(jí)下不規(guī)則動(dòng)詞表
- 2024“五史”全文課件
- 湖南《超高性能混凝土集成模塊建筑技術(shù)標(biāo)準(zhǔn)》
- GB/T 45089-20240~3歲嬰幼兒居家照護(hù)服務(wù)規(guī)范
- 工程材料表征技術(shù)知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋湖南工學(xué)院
- 萃智創(chuàng)新方法理論考試題庫(kù)(含答案)
- 2024年貴州省黔西南州中考?xì)v史試卷
- 2024年高考真題-地理(河北卷) 含答案
評(píng)論
0/150
提交評(píng)論