




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.2串及其運(yùn)算4.3串的存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)第4章串4.4串的模式匹配4.1應(yīng)用實(shí)例4.5實(shí)例分析與實(shí)現(xiàn)4.6算法總結(jié)數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第1頁(yè)。4.1應(yīng)用實(shí)例應(yīng)用實(shí)例:文本編輯軟件文本編輯程序是利用計(jì)算機(jī)進(jìn)行文字加工的基本軟件工具,實(shí)現(xiàn)對(duì)文本文件的插入、刪除等修改操作,甚至用于報(bào)刊和書(shū)籍的編輯排版。常用的簡(jiǎn)單文本編輯程序Edit,和文字處理軟件WPS、Word等,究其實(shí)質(zhì),都是修改字符數(shù)據(jù)的形式或格式??捎糜谖谋揪庉嫷某绦蚝芏?,功能不同且強(qiáng)弱差別很大,但基本操作是一樣的,一般都包含串的查找、插入和刪除等基本操作。數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第2頁(yè)。4.2串及其運(yùn)算是由零個(gè)或多個(gè)字符組成的有限序列。
S=a0a1a2…an-1
(n≥0)子串:第4章串串中任意個(gè)連續(xù)的字符組成的子序列。主串:包含子串的串相應(yīng)地稱為主串。位置:字符在序列中的序號(hào)。子串在主串中的位置則以子串的第一個(gè)字符在主串中的位置來(lái)表示。相等:兩個(gè)串的長(zhǎng)度相等,并且對(duì)應(yīng)位置的字符都相等??沾c空白串?dāng)?shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第3頁(yè)。串的抽象數(shù)據(jù)類型的定義第4章串ADTString{
數(shù)據(jù)元素:D={ai|ai∈CharacterSet,記為V,i=1,2,…,n;n≥0}
數(shù)據(jù)關(guān)系:R={<ai,ai+1>|ai,ai+1∈V,i=1,2,…,n-1;n-1≥0
}
基本操作:
(1)StrAssign(S,chars)
(2)StrInsert(S,pos,T)
(3)StrDelete(S,pos,len)
………p106}ADT
String4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第4頁(yè)?;静僮鳎旱?章串StrInsert(S,pos,T)初始條件:串S和T存在,1≤pos≤StrLength(S)+1。
操作結(jié)果:在串S的下標(biāo)為pos的字符之前插入串T。StrInsert(S,pos,T)例如:S=chater,T=rac,則執(zhí)行StrInsert(S,3,T)之后S=
character4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第5頁(yè)?;静僮鳎旱?章串StrDelete(S,pos,len)初始條件:串S存在1≤pos≤StrLength(S)+1。
操作結(jié)果:從串S中刪除下標(biāo)為pos的字符起長(zhǎng)度為len的子串。
StrDelete(S,pos,len)例如:S=character,則執(zhí)行StrDelete(S,3,3)之后S=chater4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第6頁(yè)?;静僮鳎旱?章串StrCat(S,T)初始條件:串S和T存在。
操作結(jié)果:返回由S和T聯(lián)接而成的新串。StrCat(S,T)例如:StrCat(man,kind)=mankind4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第7頁(yè)。基本操作:第4章串SubString(Sub,S,pos,len)初始條件:串S存在,1≤pos≤Length(S)
且0≤len≤Length(S)-pos+1。操作結(jié)果:用Sub返回串S的第pos個(gè)字符起長(zhǎng)度為len的子串。SubString(Sub,S,pos,len)例如:SubString(sub1,commander,4,3)sub1=manSubString(sub2,
commander,4,7)sub2=?SubString(sub3,beijing,7,2)=?sub3=?起始位置和子串長(zhǎng)度之間存在約束關(guān)系!4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第8頁(yè)?;静僮鳎旱?章串StrIndex(S,pos,T)
初始條件:主串S和T存在,T是非空串操作結(jié)果:若主串S中存在和串T值相同的子串,則返回它在主串S中從第pos個(gè)字符開(kāi)始第一次出現(xiàn)的位置;否則函數(shù)值為0。StrIndex(S,pos,T)例如:S=abcaabcaaabc,T=bcaStrIndex(S,1,T)=2StrIndex(S,4,T)=64.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第9頁(yè)。基本操作:第4章串StrReplace(S,T,V)
初始條件:串S,T和V均已存在,且T是非空串。操作結(jié)果:用V替換主串S中出現(xiàn)的所有與(模式串)T相等的不重疊的子串。StrReplace(S,T,V)例如:S=abcaabcaaabca,T=bca,V=xS=axaxaax給出一個(gè)由小寫(xiě)字母組成的串s和一個(gè)不超過(guò)s的長(zhǎng)度的正整數(shù)l,求s所有長(zhǎng)度不小于l的子串在s中不重疊地重復(fù)出現(xiàn)次數(shù)最多的子串。4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第10頁(yè)。對(duì)于串的基本操作集可以有不同的定義方法,在使用高級(jí)程序設(shè)計(jì)語(yǔ)言中的串類型時(shí),應(yīng)以該語(yǔ)言的參考手冊(cè)為準(zhǔn)?;静僮鞯?章串4.2串及其運(yùn)算數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第11頁(yè)。①定長(zhǎng)順序串4.3串的存儲(chǔ)及實(shí)現(xiàn)常用的實(shí)現(xiàn)方法:第4章串②堆串③塊鏈串?dāng)?shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第12頁(yè)。①定長(zhǎng)順序串常用的實(shí)現(xiàn)方法:第4章串存儲(chǔ)表示:靜態(tài)數(shù)組結(jié)構(gòu)#defineMAXLEN40typedefstruct{charstr[MAXLEN];intlength;}SString;4.3串的存儲(chǔ)及實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第13頁(yè)。①定長(zhǎng)順序串常用的實(shí)現(xiàn)方法:第4章串基本操作:
插入、刪除、復(fù)制、判空、比較、求串長(zhǎng)、清空、連接、求子串。參見(jiàn)P78~80頁(yè)4.3串的存儲(chǔ)及實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第14頁(yè)。②堆串常用的實(shí)現(xiàn)方法:第4章串存儲(chǔ)表示:
動(dòng)態(tài)地分配一組地址連續(xù)的存儲(chǔ)單元。typedefstruct{char*ch;intlen;}HString;4.3串的存儲(chǔ)及實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第15頁(yè)。poolelpmasNAMEINFORMATION?,6?,4pool4elpmas6NAMEINFORMATION??數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第16頁(yè)。②堆串常用的實(shí)現(xiàn)方法:基本操作:
賦值、插入、刪除。參見(jiàn)P81~82頁(yè)4.3串的存儲(chǔ)及實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第17頁(yè)。③塊鏈串常用的實(shí)現(xiàn)方法:第4章串存儲(chǔ)表示:可用鏈表來(lái)存儲(chǔ)串值,由于串的數(shù)據(jù)元素是一個(gè)字符,它只有8位二進(jìn)制數(shù),因此用鏈表存儲(chǔ)時(shí),通常一個(gè)結(jié)點(diǎn)中存放的不是一個(gè)字符,而是一個(gè)字符串。#defineBLOCK_SIZE4
typedefstructBlock
{charch[BLOCK_SIZE];
structBlock
*next;
}Block;
typedefstruct{
Block*head,*tail;
intcurlen;
}BLString;4.3串的存儲(chǔ)及實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第18頁(yè)。4.4簡(jiǎn)單的行編輯器
整個(gè)文本編輯區(qū)可以看成是一個(gè)字符串,稱為文本串。每一頁(yè)是文本串的一個(gè)子串,每一行是每一頁(yè)的一個(gè)子串,即:同一行的串用定長(zhǎng)結(jié)構(gòu)(80個(gè)字符),行和行之間用行指針相鏈接,頁(yè)和頁(yè)之間用頁(yè)指針相鏈接。數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第19頁(yè)。4.5串的模式匹配算法首先,回憶一下串匹配(查找)的定義:StrInex(S,pos,T)初始條件:主串S和T存在,T是非空串并且1≤pos≤Length(S)。
操作結(jié)果:若主串S中存在和串T值相同的子串,則返回它在主串S中從第
pos個(gè)字符開(kāi)始第一次出現(xiàn)的位置;
否則函數(shù)值為0。數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第20頁(yè)。“子串在主串中的位置”意指子串中的第一個(gè)字符在主串中的位序。例如:S=abcaabcaaabc,T=bcaStrInex(S,1,T)=StrInex(S,4,T)=624.5串的模式匹配算法數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第21頁(yè)。下面討論以定長(zhǎng)順序結(jié)構(gòu)表示串時(shí)的幾種算法。①簡(jiǎn)單匹配算法(Brute-Force)②首尾匹配算法③KMP(D.E.Knuth,J.H.Morris,V.R.Pratt)算法4.5串的模式匹配算法數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第22頁(yè)。*4.4串的模式匹配算法①簡(jiǎn)單匹配算法(Brute-Force)intStrIndex(SStrings,intpos,SStringt){ inti,j,start; if(t.len==0) return(0);
start=pos;
i=start;
j=0; while(i<s.len&&j<t.len)
if(s.ch[i]==t.ch[j]) {
i++;
j++;
} else {
start++;
i=start;
j=0;
} if(j>=t.len) return(start);
else
return(-1);}數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第23頁(yè)。②首尾匹配算法先比較模式串中的第一個(gè)字符再比較模式串中的最后一個(gè)字符最后比較模式串中從第二個(gè)到第n-1個(gè)字符4.5串的模式匹配算法數(shù)據(jù)結(jié)構(gòu)與算法4-串全文共25頁(yè),當(dāng)前為第
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 綠化建設(shè)專項(xiàng)合同
- 紙質(zhì)運(yùn)動(dòng)裝備市場(chǎng)細(xì)分與產(chǎn)品設(shè)計(jì)原則探討考核試卷
- 短期醫(yī)藥代表合同
- 民國(guó)路燈美術(shù)課件
- 眼鏡行業(yè)互聯(lián)網(wǎng)+發(fā)展趨勢(shì)考核試卷
- 農(nóng)用機(jī)械化農(nóng)業(yè)氣象服務(wù)與農(nóng)業(yè)風(fēng)險(xiǎn)管理策略研究考核試卷
- 毛皮制品包裝設(shè)計(jì)考核試卷
- 玉米種植的農(nóng)業(yè)電商發(fā)展考核試卷
- 糧食倉(cāng)儲(chǔ)企業(yè)綠色經(jīng)濟(jì)產(chǎn)業(yè)鏈構(gòu)建考核試卷
- 海面風(fēng)速預(yù)測(cè)考核試卷
- GB/T 43953-2024全生物降解聚乙醇酸(PGA)
- 國(guó)家八年級(jí)數(shù)學(xué)質(zhì)量測(cè)試題(六套)
- 青光眼小梁切除手術(shù)
- (2024年)肺栓塞課件
- 2024吉林省民航機(jī)場(chǎng)集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 電磁現(xiàn)象及其應(yīng)用-理解電磁現(xiàn)象及其在日常生活中的應(yīng)用
- 車輛行駛安全培訓(xùn)模板
- 開(kāi)展中醫(yī)藥健康文化宣傳活動(dòng)方案(樣式)
- 油漆涂料行業(yè)市場(chǎng)分析
- 跨境數(shù)據(jù)流動(dòng)與治理
- 輸血治療知情同意書(shū)
評(píng)論
0/150
提交評(píng)論