版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
NorthChinaElectricPowerUniversity第五章串第五章串5.1串的基本概念5.2串的基本操作5.3
串的存儲(chǔ)結(jié)構(gòu)NorthChinaElectricPowerUniversity5.4關(guān)于串的幾個(gè)算法NorthChinaElectricPowerUniversity例如:
S1=〝abc
〞S2=〝FORTRAN_77〞
S3=〝
〞
=
(空串)S4=
〝
〞
由4個(gè)空格組成的空格串
串是由n0個(gè)字符組成的有限序列,通常記為
S=〝a1a2a3…an-1an〞
其中,S表示串名(也稱串變量),一對(duì)引號(hào)括起來的字符序列稱為串值,ai為串的元素,可以是字母、數(shù)字或其他允許的字符。n為串的長(zhǎng)度(即串中字符的個(gè)數(shù)),長(zhǎng)度為0的串稱為空串。一.串的定義
5.1
串的基本概念華電計(jì)算機(jī)系NorthChinaElectricPowerUniversity
1.串值須用一對(duì)引號(hào)括起來,但引號(hào)不屬于串值。說明2.要區(qū)分空串與由空格字符組成的串的不同。例如:a=〝
beijing〞
其值為字符串序列beijing
。華電計(jì)算機(jī)系1.子串:串中若干個(gè)連續(xù)的字符組成的子序列。例如:S=〝Beijing&Shanghai〞
T=〝jing
〞2.主串:
包含子串的串。3.序號(hào):(1).單個(gè)字符在主串中的位置
(2).子串在主串中的序號(hào)。定義為主串中首次出現(xiàn)的該子串的第一個(gè)字符在主串中的位置。被定義為該字符在串中的序號(hào)。例如:S=〝Beijing&Nanjing&Shanghai〞
T=〝jing
〞
位置為4二.幾個(gè)名詞概念華電計(jì)算機(jī)系
的充分必要條件為兩個(gè)字符串的長(zhǎng)度相等,4.兩個(gè)字符串相等〝abcd
〞
〝
bacd
〞〝
abcd
〞=〝
abcd
〞并且對(duì)應(yīng)位置上的字符相同。5.空格串:
僅由空格組成的串,串中空格字符的個(gè)數(shù)即為其長(zhǎng)度,為了清楚起見,經(jīng)常用符號(hào)Ф
來表示空格??沾嚎沾袩o任何字符,記作s=〝〞,其長(zhǎng)度為0。5.空格串:
僅由空格組成的串,串中空格字符的個(gè)數(shù)即為其長(zhǎng)度,為了清楚起見,經(jīng)常用符號(hào)Ф
來表示空格。華電計(jì)算機(jī)系NorthChinaElectricPowerUniversity
5.2
串的基本操作1.將串t的值賦給串s:String
Strassign(Strings,Stringt)2.判斷兩個(gè)串是否相等EQUAL(S1,S2).相等值為真,否則為假3.兩個(gè)字符串連接CONCAT(S1,S2)把S2的值放到S1的后邊如:a=〝bei
〞,b=〝jing
〞
Concat(a,b)=〝beijing
〞,Concat(b,a)=〝jingbei
〞4.求字符串的長(zhǎng)度LEN(S)。5.求子串SUBSTR(S,i,k)表示從S串的第i個(gè)字符開始起數(shù)k個(gè)字符的子串。6.求子串在主串中的序號(hào)
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ì)算機(jī)系NorthChinaElectricPowerUniversity
1、求子串在主串中的序號(hào)運(yùn)算(index(a,b,k))思想:在a串從第k個(gè)字符起進(jìn)行搜索看是否有和b相同的子串,若有則子串的第一個(gè)字符在a中的位置便是index(a,b)的結(jié)果,若無則結(jié)果為0。voidindex(a,b,k)//求b在a中的序號(hào)ind,從第k個(gè)字符開始,第一次k等于1{n=LEN(a);m=LEN(b);ind=0;if(n-k+1<m)return;//子串>主串時(shí)返回i=k;do{if(SUBSTR
(a,i,m)==b){ind=i;exit}elsei=i+1;}while(i>n-m+1);}華電計(jì)算機(jī)系NorthChinaElectricPowerUniversity
2、置換運(yùn)算(REPLACE(a,b,c))思想:在a串中搜索和b串相同的子串,若有則以C串代替這個(gè)子串,在繼續(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ì)算機(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ì)算機(jī)系NorthChinaElectricPowerUniversity1.非緊縮格式(設(shè)每個(gè)字有4個(gè)字節(jié))例如:S=〝DATASTRUCTURE〞DASTRUCTATURE@DATASTRUCTURE@2.緊縮格式(按字編址)3.單字節(jié)方式(按字節(jié)編址)
5.3
串的存儲(chǔ)結(jié)構(gòu)一.串的順序存儲(chǔ)結(jié)構(gòu)ATSATRUUTCDRE@華電計(jì)算機(jī)系(按字編址)順序存儲(chǔ)中三種方式比較顯然緊縮格式節(jié)省空間,但在進(jìn)行串運(yùn)算時(shí),需要花費(fèi)較多的時(shí)間去分離同一個(gè)字中的字符,而非緊縮格式正相反。通常一個(gè)字節(jié)恰好存儲(chǔ)一個(gè)字符的ASCII碼,這就自然形成了一個(gè)字節(jié)存放一個(gè)字符的單字節(jié)存儲(chǔ)格式,既節(jié)省空間,又處理方便。他們的共性就是空間利用率高,訪問方便,但插入刪除不方便,鏈表存儲(chǔ)恰好彌補(bǔ)了這一不足。華電計(jì)算機(jī)系NorthChinaElectricPowerUniversity說明:所謂鏈結(jié)點(diǎn)大小是指每個(gè)鏈結(jié)點(diǎn)的數(shù)據(jù)域中存放的字符的個(gè)數(shù)。二.串的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)DATASTRRE
……S^結(jié)點(diǎn)大小為4的鏈表SDATE^……結(jié)點(diǎn)大小為1的鏈表華電計(jì)算機(jī)系當(dāng)結(jié)點(diǎn)大小大于1時(shí),一個(gè)串中最后結(jié)點(diǎn)不一定全部占滿,我們一般補(bǔ)上空格符填滿。我們用
來表示NorthChinaElectricPowerUniversity符號(hào)表包括:(1)串值的起始地址。(2)串值的末尾地址。確定末尾地址的方式有三種:
a、用串長(zhǎng)來代替末尾地址。
b、串值末尾設(shè)結(jié)束符。
c、直接寫末尾地址。(3)若字?jǐn)?shù)不多可直接寫串值本身。
我們用變量作各種運(yùn)算,是通過對(duì)變量名的訪問,而找到它的內(nèi)容的,我們對(duì)串變量進(jìn)行運(yùn)算,也需要通過變量來找到它的內(nèi)容,因此在內(nèi)存中除了存儲(chǔ)串值本身,另外在內(nèi)存中需要設(shè)一個(gè)符號(hào)表。這種方式我們叫做串變量的存儲(chǔ)映像。三、串變量的存儲(chǔ)映像華電計(jì)算機(jī)系NorthChinaElectricPowerUniversity5.4
串的幾個(gè)算法一.串的定義typedef
structstring{int
curlen;charch[1:maxlen];}二.串的連接華電計(jì)算機(jī)系假設(shè)r,s,t都是上面定義的string型變量,且r是s與t連接后得到的串,則連接運(yùn)算concat(r,s,t)是將s與t的串值分別傳送到r相應(yīng)的位置上。NorthChinaElectricPowerUniversity1)s.curlen+t.curlen≤maxlen,這時(shí)得到的串r是連接所要求的正確結(jié)果;2)s.curlen+t.curlen>maxlen,需要將t的一部分截?cái)?,得到的串r只包含s和t的一個(gè)子串;3)s.curlen>maxlen,這時(shí)需要對(duì)s進(jìn)行截?cái)?,得到的串r僅是
s的一個(gè)子串;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ì)算機(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個(gè)字符依次送到t[i]位置上
{for(k=0;k<=num-1;k++)
t[i+k]=s[j+k];}三.求子串的運(yùn)算求子串的過程sub(r,s,fir,length)也是移動(dòng)字符序列的過程,它將串s中從第fir位置開始的長(zhǎng)度為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ì)算機(jī)系NorthChinaElectricPowerUniversity四.求子串在串中的序號(hào)的運(yùn)算(模式匹配)voidindex_bf(s,t,ind);{i=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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è)計(jì)報(bào)告總結(jié)
- 礦井通風(fēng)課程設(shè)計(jì)心得
- 綜合通信系統(tǒng)課程設(shè)計(jì)
- 電工電子課程設(shè)計(jì)概述
- 英文秋天主題課程設(shè)計(jì)
- 研學(xué)谷物分揀課程設(shè)計(jì)
- 線上公交類培訓(xùn)課程設(shè)計(jì)
- 按鍵電燈課程設(shè)計(jì)
- 職業(yè)素養(yǎng)課程設(shè)計(jì)總結(jié)
- 自然教育課程設(shè)計(jì)冬天
- 10套深藍(lán)色商務(wù)醫(yī)院科室組織架構(gòu)PPT圖表合集
- 學(xué)生請(qǐng)假外出審批表
- 疼痛診療與康復(fù)
- 核醫(yī)學(xué)科PDCA案例
- T∕ACSC 01-2022 輔助生殖醫(yī)學(xué)中心建設(shè)標(biāo)準(zhǔn)(高清最新版)
- 新版【處置卡圖集】施工類各崗位應(yīng)急處置卡(20頁(yè))
- 管廊維護(hù)與運(yùn)營(yíng)績(jī)效考核評(píng)分表
- 鋼制三通加工工藝流程介紹
- 移交涉密載體簽收單(模板)
- 機(jī)動(dòng)車檢測(cè)站內(nèi)部管理制度.doc
- 投標(biāo)文件封標(biāo)用封面、密封條11
評(píng)論
0/150
提交評(píng)論