串的基本操作_第1頁(yè)
串的基本操作_第2頁(yè)
串的基本操作_第3頁(yè)
串的基本操作_第4頁(yè)
串的基本操作_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#include #include #include typedef struct char *str; int length; HString;/ 堆串 / 初始化 void InitString(HString S.length =0; / 堆串賦值 void StrAssign(HString char *p; p=chars; if(S.str) free(S.str); for(i=0;pi!=0;i+) len=i+1; if(!i) S.length =0; S.str =0; else S.str=(char *)malloc(len*sizeof(char); if(!S.s

2、tr ) exit(-1); for(i=0;ilen;i+) S.stri=pi; S.length =len; / 判斷堆串是否為空 int StrEmpty(HString S) if(S.length =0) return 1; else return 0; / 求堆串長(zhǎng)度 int StrLength(HString S) return S.length ; / 串的復(fù)制操作 int StrCopy(HString T.str =(char *)malloc(S.length*sizeof(char); if(!T.str) return 0; for(i=0;iS.length;i+

3、) T.stri=S.stri; T.length=S.length; return 1; / 串的比較操作 int StrCompare(HString S,HString T) /*比較串S與串T的大小,如果 S的值大于T,返回正值;如果S的值小于T,返回負(fù) 值;如果相等,返回 0*/ int i; for(i=0;iS.lengthi+) if(S.stri!=T.stri) return (S.stri-T.stri); return (S.length-T.length ); / 串的插入操作 int StrInsert(HString if(posS.length) printf(

4、 插入位置錯(cuò)誤 n); return 0; S.str=(char *)realloc(S.str,(S.length+T.length)*sizeof(char); if(!S.str) printf( 內(nèi)存分配失敗 n); return 0; for(i=S.length-1;ipos-1;i-) S.stri+T.length=S.stri; for(i=0;iT.length;i+) S.strpos+i-1=T.stri; S.length=S.length+T.length; return 1; / 串的刪除操作 int StrDelete(HString char *p; if(

5、posS.length) printf( 刪除位置錯(cuò)誤,參數(shù) len 不合法 n); return 0; p=(char *)malloc(S.length-len); if(!p) printf( 內(nèi)存分配失敗 n); return 0; for(i=0;ipos-1;i+) pi=S.stri; for(i=pos-1;iS.length-len;i+) pi=S.stri+len; S.length=S.length-len; free(S.str); S.str=p; return 1; / 串的連接操作 int StrConcat(HString T.str=(char *)real

6、loc(T.str,(T.length+S.length)*sizeof(char) ; if(!T.str) printf( 內(nèi)存分配失敗 n); return 0; else for(i=T.length;iT.length +S.length ;i+) T.stri=S.stri-T.length; T.length =T.length +S.length ; return 1; / 截取子串操作 int SubString(HString if(Sub.str ) free(Sub.str ); if(pos0|lenS.length ) printf( 參數(shù) len 和 pos 不合

7、法 n); return 0; else Sub.str =(char *)malloc(len*sizeof(char); if(!Sub.str) printf( 內(nèi)存分配失敗 n); return 0; for(i=0;ilen;i+) Sub.stri=S.strpos+1-1; Sub.length =len; return 1; / 串的定位操作 int StrIndex(HString S,int pos,HString T) /*在主串S中的第pos個(gè)位置開(kāi)始查找子串T,如果找到,返回子串在主串中 的位置;否則,返回 -1*/ int i,j; if(StrEmpty(T) p

8、rintf( 子串為空 n); return 0; i=pos-1; j=0; while(iS.length else return -1; / 串的替換操作 int StrReplace(HString int flag; if(StrEmpty(T) printf( 子串為空 n); return 0; do i=StrIndex(S,i,T); if(i) StrDelete(S,i,StrLength(T); flag=StrInsert(S,i,V); if(!flag) printf( 插入失敗 n); return 0; i+=StrLength(V); while(i); r

9、eturn 1; / 串的清空操作 void StrClear(HString S.str=0; S.length=0; / 輸出串 void Strprint(HString S) int i; for(i=0;i0) printf( 串 S 大于串 Tn); else if(StrCompare(S,T)0) printf( 串 S 小于串 Tn); else printf(” 串 S 與串 T 相等 n); break; case 9:printf(在S中第pos個(gè)位置插入 Tn); printf( 請(qǐng)輸入 pos:); scanf(%d, printf( 請(qǐng)輸入 T:); scanf(

10、%s,s); InitString(T); StrAssign(T,s); if(StrInsert(S,pos,T) printf( 插入成功 n); break; case 10:printf( 在 S 中刪除 pos 開(kāi)始的 len 個(gè)字符 n); printf( 請(qǐng)輸入 pos:); scanf(%d, printf( 請(qǐng)輸入 len:); scanf(%d, if(StrDelete(S,pos,len) printf( 刪除成功 n); break; case 11:printf( 將串 T 連接在 S 后 n); printf( 請(qǐng)輸入 T:); scanf(%s,s); Ini

11、tString(T); StrAssign(T,s); if(StrConcat(S,T) printf( 連接成功 n); break; case 12:printf( 將從 S 中第 pos 個(gè)位置截取長(zhǎng)度為 len Subn); printf( 請(qǐng)輸入 pos:); scanf(%d, printf( 請(qǐng)輸入 len:); scanf(%d, InitString(Sub); if(SubString(Sub,S,pos,len) printf( 截取成功 n); Strprint(Sub); break; case 13:printf(”將串S中所有子串 T用串V替換n); printf( 請(qǐng)輸入 T:); scanf(%s,s); InitString(T); StrAssign(T,s); printf( 請(qǐng)輸入 V:); scanf(%s,s); InitString(V); StrAssign(V,s); if(StrReplace(S,T,V) printf( 替換成功 n); break; case 14:printf( 在主串 S 中的第 pos 個(gè)位置開(kāi)始查找子串 返回子串在主串中的位置

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論