#include#include#defineOK1#defineERROR0#defineOVERFLOW-2typedefintStatus;typedefstr">
數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc

數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc

ID:59194535

大小:24.50 KB

頁數(shù):7頁

時間:2020-09-10

數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc_第1頁
數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc_第2頁
數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc_第3頁
數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc_第4頁
數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc_第5頁
資源描述:

《數(shù)據(jù)結(jié)構(gòu)c語言串的堆分配存儲源程序.doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、#include#include#include#defineOK1#defineERROR0#defineOVERFLOW-2typedefintStatus;typedefstruct{char*ch;intlength;}HString;//初始化操作voidInitString(HString*T){T->length=0;T->ch=NULL;}//賦值操作StatusStrAssign(HString*T,char*chars){//生成一個其值等于串常量chars的串Tinti,j;//ch

2、ar*c;if(T->ch)free(T->ch);//釋放T原有空間//for(i=0,c=chars;*c;++i,++c);//求chars的長度i,*c表*c!=NULLi=strlen(chars);if(!i){T->ch=NULL;T->length=0;}else{T->ch=(char*)malloc(i*sizeof(char));if(!T->ch)exit(OVERFLOW);for(j=0;jch[j]=chars[j];T->length=i;}returnOK;}//StrAssign//串復制操作StatusS

3、trCopy(HString*T,HStringS){inti;if(T->ch)free(T->ch);T->ch=(char*)malloc(S.length*sizeof(char));if(!T->ch)exit(OVERFLOW);for(i=0;ich[i]=S.ch[i];T->length=S.length;returnOK;}//StrCopy//判空操作StatusStrEmpty(HStringS){if(S.length==0&&S.ch==NULL)returnOK;elsereturnERROR;}/

4、/StrEmpty//求長度操作intStrLength(HStringS){returnS.length;}//Strlength//串比較操作intStrCompare(HStringS,HStringT){inti;for(i=0;ich){free(S->ch);

5、S->ch=NULL;}S->length=0;returnOK;}//ClearString//串連接操作StatusConcat(HString*T,HStringS1,HStringS2){inti;if(T->ch)free(T->ch);//釋放舊空間T->ch=(char*)malloc((S1.length+S2.length)*sizeof(char));if(!T->ch)exit(OVERFLOW);for(i=0;ich[i]=S1.ch[i];}T->length=S1.length+S2.lengt

6、h;for(i=0;ich[S1.length+i]=S2.ch[i];}returnOK;}//Concat//求子串操作StatusSubString(HString*Sub,HStringS,intpos,intlen){inti;if(pos<1

7、

8、pos>S.length

9、

10、len<0

11、

12、len>S.length-pos+1)returnERROR;if(Sub->ch)free(Sub->ch);//釋放舊空間if(!len){//空子串Sub->ch=NULL;Sub->length=0;}else{//完整子

13、串Sub->ch=(char*)malloc(len*sizeof(char));if(!Sub->ch)exit(OVERFLOW);for(i=0;i<=len-1;i++)Sub->ch[i]=S.ch[pos-1+i];Sub->length=len;}returnOK;}//SubString//求子串位置操作intIndex(HStringS,HStringT,intpos){//T為非空串。若主串S中第pos個字符之后存在與T相等的子串,//則返回第一個這樣的子串在S中的位置,否則返回0inti,m,n;HStringSub;InitString(

14、&Sub);//一定要初

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。