




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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; / 求堆串長度 int StrLength(HString S) return S.length ; / 串的復制操作 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,返回負 值;如果相等,返回 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、 插入位置錯誤 n); return 0; S.str=(char *)realloc(S.str,(S.length+T.length)*sizeof(char); if(!S.str) printf( 內存分配失敗 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( 刪除位置錯誤,參數 len 不合法 n); return 0; p=(char *)malloc(S.length-len); if(!p) printf( 內存分配失敗 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); 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( 參數 len 和 pos 不合
7、法 n); return 0; else Sub.str =(char *)malloc(len*sizeof(char); if(!Sub.str) printf( 內存分配失敗 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個位置開始查找子串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個位置插入 Tn); printf( 請輸入 pos:); scanf(%d, printf( 請輸入 T:); scanf(
10、%s,s); InitString(T); StrAssign(T,s); if(StrInsert(S,pos,T) printf( 插入成功 n); break; case 10:printf( 在 S 中刪除 pos 開始的 len 個字符 n); printf( 請輸入 pos:); scanf(%d, printf( 請輸入 len:); scanf(%d, if(StrDelete(S,pos,len) printf( 刪除成功 n); break; case 11:printf( 將串 T 連接在 S 后 n); printf( 請輸入 T:); scanf(%s,s); Ini
11、tString(T); StrAssign(T,s); if(StrConcat(S,T) printf( 連接成功 n); break; case 12:printf( 將從 S 中第 pos 個位置截取長度為 len Subn); printf( 請輸入 pos:); scanf(%d, printf( 請輸入 len:); scanf(%d, InitString(Sub); if(SubString(Sub,S,pos,len) printf( 截取成功 n); Strprint(Sub); break; case 13:printf(”將串S中所有子串 T用串V替換n); printf( 請輸入 T:); scanf(%s,s); InitString(T); StrAssign(T,s); printf( 請輸入 V:); scanf(%s,s); InitString(V); StrAssign(V,s); if(StrReplace(S,T,V) printf( 替換成功 n); break; case 14:printf( 在主串 S 中的第 pos 個位置開始查找子串 返回子串在主串中的位置
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)集資合同范本
- 合同范本甲方名字過長
- 農村澆地用電合同范本
- 合伙辦鞋廠合同范本
- 合同范本橫豎
- 中介臨時勞動合同范例
- 協(xié)議購車合同范本
- 專業(yè)監(jiān)理安裝合同范本
- 吉利采購合同范本
- 廠房賃合同范本
- 接觸隔離標準操作流程
- 港股基礎知識
- 2025年遼寧醫(yī)藥職業(yè)學院高職單招職業(yè)適應性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年溫州市甌海旅游投資集團有限公司下屬子公司招聘筆試參考題庫附帶答案詳解
- 2025年天津三源電力集團有限公司招聘筆試參考題庫含答案解析
- 2025年上半年浙江嘉興桐鄉(xiāng)市水務集團限公司招聘10人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年腹腔穿刺術課件 (1)2
- (八省聯考)2025年高考綜合改革適應性演練 物理試卷合集(含答案逐題解析)
- 2024年干式電力電容器項目可行性研究報告
- 河南12系列建筑設計圖集一(12YJ1)
- 2025年度智能倉儲管理系統(tǒng)軟件開發(fā)合同6篇
評論
0/150
提交評論