![數(shù)據(jù)結(jié)構(gòu)-合肥工業(yè)大學(xué) 5_第1頁](http://file4.renrendoc.com/view7/M01/2B/15/wKhkGWcHSImAEyZCAACQQZhSk9E985.jpg)
![數(shù)據(jù)結(jié)構(gòu)-合肥工業(yè)大學(xué) 5_第2頁](http://file4.renrendoc.com/view7/M01/2B/15/wKhkGWcHSImAEyZCAACQQZhSk9E9852.jpg)
![數(shù)據(jù)結(jié)構(gòu)-合肥工業(yè)大學(xué) 5_第3頁](http://file4.renrendoc.com/view7/M01/2B/15/wKhkGWcHSImAEyZCAACQQZhSk9E9853.jpg)
![數(shù)據(jù)結(jié)構(gòu)-合肥工業(yè)大學(xué) 5_第4頁](http://file4.renrendoc.com/view7/M01/2B/15/wKhkGWcHSImAEyZCAACQQZhSk9E9854.jpg)
![數(shù)據(jù)結(jié)構(gòu)-合肥工業(yè)大學(xué) 5_第5頁](http://file4.renrendoc.com/view7/M01/2B/15/wKhkGWcHSImAEyZCAACQQZhSk9E9855.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
NorthChinaElectricPowerUniversity第五章串第五章串5.1串的基本概念5.2串的基本操作5.3
串的存儲結(jié)構(gòu)NorthChinaElectricPowerUniversity5.4關(guān)于串的幾個算法NorthChinaElectricPowerUniversity例如:
S1=〝abc
〞S2=〝FORTRAN_77〞
S3=〝
〞
=
(空串)S4=
〝
〞
由4個空格組成的空格串
串是由n0個字符組成的有限序列,通常記為
S=〝a1a2a3…an-1an〞
其中,S表示串名(也稱串變量),一對引號括起來的字符序列稱為串值,ai為串的元素,可以是字母、數(shù)字或其他允許的字符。n為串的長度(即串中字符的個數(shù)),長度為0的串稱為空串。一.串的定義
5.1
串的基本概念華電計算機(jī)系NorthChinaElectricPowerUniversity
1.串值須用一對引號括起來,但引號不屬于串值。說明2.要區(qū)分空串與由空格字符組成的串的不同。例如:a=〝
beijing〞
其值為字符串序列beijing
。華電計算機(jī)系1.子串:串中若干個連續(xù)的字符組成的子序列。例如:S=〝Beijing&Shanghai〞
T=〝jing
〞2.主串:
包含子串的串。3.序號:(1).單個字符在主串中的位置
(2).子串在主串中的序號。定義為主串中首次出現(xiàn)的該子串的第一個字符在主串中的位置。被定義為該字符在串中的序號。例如:S=〝Beijing&Nanjing&Shanghai〞
T=〝jing
〞
位置為4二.幾個名詞概念華電計算機(jī)系
的充分必要條件為兩個字符串的長度相等,4.兩個字符串相等〝abcd
〞
〝
bacd
〞〝
abcd
〞=〝
abcd
〞并且對應(yīng)位置上的字符相同。5.空格串:
僅由空格組成的串,串中空格字符的個數(shù)即為其長度,為了清楚起見,經(jīng)常用符號Ф
來表示空格??沾嚎沾袩o任何字符,記作s=〝〞,其長度為0。5.空格串:
僅由空格組成的串,串中空格字符的個數(shù)即為其長度,為了清楚起見,經(jīng)常用符號Ф
來表示空格。華電計算機(jī)系NorthChinaElectricPowerUniversity
5.2
串的基本操作1.將串t的值賦給串s:String
Strassign(Strings,Stringt)2.判斷兩個串是否相等EQUAL(S1,S2).相等值為真,否則為假3.兩個字符串連接CONCAT(S1,S2)把S2的值放到S1的后邊如:a=〝bei
〞,b=〝jing
〞
Concat(a,b)=〝beijing
〞,Concat(b,a)=〝jingbei
〞4.求字符串的長度LEN(S)。5.求子串SUBSTR(S,i,k)表示從S串的第i個字符開始起數(shù)k個字符的子串。6.求子串在主串中的序號
INDEX(S1,S2),求子串S2在主串S1中的位置。7.串的替換REPLACE(S,S1,S2),把S中的子串S1用S2替換,如果S1不是S的子串,則S不變。例:a=〝Monday
〞,b=〝Mon
〞,c=〝Thurs
〞REPLACE(a,b,c)=〝Thursday
〞華電計算機(jī)系NorthChinaElectricPowerUniversity
1、求子串在主串中的序號運算(index(a,b,k))思想:在a串從第k個字符起進(jìn)行搜索看是否有和b相同的子串,若有則子串的第一個字符在a中的位置便是index(a,b)的結(jié)果,若無則結(jié)果為0。voidindex(a,b,k)//求b在a中的序號ind,從第k個字符開始,第一次k等于1{n=LEN(a);m=LEN(b);ind=0;if(n-k+1<m)return;//子串>主串時返回i=k;do{if(SUBSTR
(a,i,m)==b){ind=i;exit}elsei=i+1;}while(i>n-m+1);}華電計算機(jī)系NorthChinaElectricPowerUniversity
2、置換運算(REPLACE(a,b,c))思想:在a串中搜索和b串相同的子串,若有則以C串代替這個子串,在繼續(xù)往下搜索,直到在a串中找不到和b相同的子串為止。VoidREPLACE(a,b,c)\\將a中的所有子串b置換為串c{n=LEN(a);m=LEN(b);s=LEN(c);if(n<m)return;p=1;Do{
index(a,b,p);
switch(ind){case0:break;case1:ifn==m{a=c;break}elsea=concat(c,Substr(a,m+1,n-m));華電計算機(jī)系NorthChinaElectricPowerUniversitycasen-m+1:{a=concat(sub(a,1,n-m),c);break}default:a=concat(sub(a,1,ind-1),c,sub(a,ind+m,n-ind-m+1));}//casen=n-m+s;p=ind+s;while(p>n-m+1)}華電計算機(jī)系NorthChinaElectricPowerUniversity1.非緊縮格式(設(shè)每個字有4個字節(jié))例如:S=〝DATASTRUCTURE〞DASTRUCTATURE@DATASTRUCTURE@2.緊縮格式(按字編址)3.單字節(jié)方式(按字節(jié)編址)
5.3
串的存儲結(jié)構(gòu)一.串的順序存儲結(jié)構(gòu)ATSATRUUTCDRE@華電計算機(jī)系(按字編址)順序存儲中三種方式比較顯然緊縮格式節(jié)省空間,但在進(jìn)行串運算時,需要花費較多的時間去分離同一個字中的字符,而非緊縮格式正相反。通常一個字節(jié)恰好存儲一個字符的ASCII碼,這就自然形成了一個字節(jié)存放一個字符的單字節(jié)存儲格式,既節(jié)省空間,又處理方便。他們的共性就是空間利用率高,訪問方便,但插入刪除不方便,鏈表存儲恰好彌補(bǔ)了這一不足。華電計算機(jī)系NorthChinaElectricPowerUniversity說明:所謂鏈結(jié)點大小是指每個鏈結(jié)點的數(shù)據(jù)域中存放的字符的個數(shù)。二.串的鏈?zhǔn)酱鎯Y(jié)構(gòu)DATASTRRE
……S^結(jié)點大小為4的鏈表SDATE^……結(jié)點大小為1的鏈表華電計算機(jī)系當(dāng)結(jié)點大小大于1時,一個串中最后結(jié)點不一定全部占滿,我們一般補(bǔ)上空格符填滿。我們用
來表示NorthChinaElectricPowerUniversity符號表包括:(1)串值的起始地址。(2)串值的末尾地址。確定末尾地址的方式有三種:
a、用串長來代替末尾地址。
b、串值末尾設(shè)結(jié)束符。
c、直接寫末尾地址。(3)若字?jǐn)?shù)不多可直接寫串值本身。
我們用變量作各種運算,是通過對變量名的訪問,而找到它的內(nèi)容的,我們對串變量進(jìn)行運算,也需要通過變量來找到它的內(nèi)容,因此在內(nèi)存中除了存儲串值本身,另外在內(nèi)存中需要設(shè)一個符號表。這種方式我們叫做串變量的存儲映像。三、串變量的存儲映像華電計算機(jī)系NorthChinaElectricPowerUniversity5.4
串的幾個算法一.串的定義typedef
structstring{int
curlen;charch[1:maxlen];}二.串的連接華電計算機(jī)系假設(shè)r,s,t都是上面定義的string型變量,且r是s與t連接后得到的串,則連接運算concat(r,s,t)是將s與t的串值分別傳送到r相應(yīng)的位置上。NorthChinaElectricPowerUniversity1)s.curlen+t.curlen≤maxlen,這時得到的串r是連接所要求的正確結(jié)果;2)s.curlen+t.curlen>maxlen,需要將t的一部分截斷,得到的串r只包含s和t的一個子串;3)s.curlen>maxlen,這時需要對s進(jìn)行截斷,得到的串r僅是
s的一個子串;voidconcat(string&r,&s,&t;bool&p);{if(s.curlen+t.curlen<=maxlen){p=false;movch(r,s,1,1,s.curlen);movch(r,t,s.curlen+1,1,t.curlen);
r.curlen=s.curlen+t.curlen;}if((s.curlen+t.curlen>maxlen)&&(s.curlen<maxlen)){p=true;movch(r,s,1,1,s.curlen);movch(r,t,s.curlen+1,1,maxlen-s.curlen);
r.curlen=maxlen;}華電計算機(jī)系NorthChinaElectricPowerUniversity
if(s.curlen>=maxlen){p=true;movch(r,s,1,1,maxlen);
r.curlen=maxlen;}
}voidmovch(int
t,s,i,j,num)//movch表示將位于s[j]起始的num個字符依次送到t[i]位置上
{for(k=0;k<=num-1;k++)
t[i+k]=s[j+k];}三.求子串的運算求子串的過程sub(r,s,fir,length)也是移動字符序列的過程,它將串s中從第fir位置開始的長度為length的子串賦給r。voidsub(r,s,fir,lenth);{if((fir+length-1>s.curlen)||(fir<1)||(length<0)){printf(“inproperlyspecifiedsubstringinsubproc”);exit;}else{movch(r,s,1,fir,length);r.curlen=length;}}華電計算機(jī)系NorthChinaElectricPowerUniversity四.求子串在串中的序號的運算(模式匹配)voidindex_bf(s,t,ind);{i=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《金屬與金屬材料》課件
- 《壓力容器零部》課件
- 《焦慮抑郁概述》課件
- 《預(yù)防醫(yī)學(xué)基礎(chǔ)》課件
- 婦幼保健院中醫(yī)科培訓(xùn)資料心身性疾病
- 品質(zhì)管理講座之品質(zhì)意識培訓(xùn)
- 2025年湖南c1貨運從業(yè)資格證考試題下載
- 汽車銷售半年總結(jié)模板
- 部編版三年級語文《古詩詞大會比賽》精美課件
- 新員工服務(wù)技巧培訓(xùn)模板
- 化工儀表自動化【第四章】自動控制儀表
- 數(shù)據(jù)結(jié)構(gòu)教學(xué)課件:chapter8
- 玉米雜交種制種技術(shù)匯總
- 線性空間的定義與性質(zhì)
- 安全生產(chǎn)十大法則及安全管理十大定律
- 化妝品批生產(chǎn)記錄
- Excel數(shù)據(jù)透視表培訓(xùn)PPT課件
- 數(shù)學(xué)八年級上浙教版3.2直棱柱的表面展開圖同步練習(xí)
- 化工車間布置原則
- 【公開課課件】高三英語二輪復(fù)習(xí)polish writing
- 貨運中心裝卸業(yè)務(wù)外包(委外)詢價采購招投標(biāo)書范本
評論
0/150
提交評論