堆分配存储表示代码_第1页
堆分配存储表示代码_第2页
堆分配存储表示代码_第3页
堆分配存储表示代码_第4页
堆分配存储表示代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、堆分配存储表示代码串的基本操作堆分配存储表示/第一部分-/# iiiclude<stdio.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2tvpedef int Status;tvpedef char CElemtype;tvpedef stinctchai- *ch;若是非空串,则按串长分配存储区,否则ch为nullint length;/串长度HStnng;/第二部分-/Status StrAssign(HStimg *t,CEl

2、emtype *chais) / 串赋值生成一个其值等于串长量chars的串Tintij;CElemtype *c;if(t->ch)fiee(t->ch);fbr(i=O, c=chars ;c 1 !='0:i+);現!i)t->ch=NULL;t->length=O;else t->ch=(char *)malloc(i *sizeof(char);if(!(t->ch)exit(OVERFLOW);他(j=Oj<ij+)t->chj=charsj;t->length=i;return OK;字符串的打印void prmt_T

3、(HStrmg T)int i;fbr(i=O ;i<T.length;i-H-)printf(,%c,T.chi);pnntf(HnM);字符串的连接Status Concat(HStriiig *t.HStriiig SLHStnng S2)inti;/如果申请到的t有其他的值,那么清空tif(t->ch) fiee(t->ch);t->ch=(CElemtype *)malloc(S 1 .lengtli+S2.length) *sizeof(CElemtype);if(!(t->ch)exit(OVERFLOW);/首先将si放到t中foi(i=0;i&l

4、t;S 1 .length;i-H-)访问结构体中的元素有两种方式:如果是指针类型,则访问时需要采用如果直接就是一个变量,则访问时需要采用t->chi=Sl.chi;将t的长度变为S1+S2t->length=S 1ength+S2.1engtli;在将S2放到t中,放在S1之后foi(i=0;i<S2ength;i+)t->chS 1 .length+i=S2.chi;return OK;求子串Status SubStiing(HStimg *sub,HStimg S,int posjnt len)mt i;如果输入的值不符合要求if(pos< 11 |pos&

5、gt;S.length|len<0 |len>S.length-pos+1)return ERROR:如果sub有其他的值,清空if(sub->ch)fiee (sub->ch);如果你要求子串的长度是0,if(!len)sub->ch=NULL;sub->length=O:elsesub->ch=(CElemtvpe *)malloc(len *sizeof(CElemtype); fbr(i=O;i<len;i-H-)sub->chi=S .chpos-1 +i;sub->length=len;return OK;严这些部分给你们

6、注释,是从网络中摘取的,你们可以一个一个的调试通。/下一步学习怎么调试mt StrCompaie(HStiiiig S,HString T)inti;fbi(i=O;i<S.length &&i<Tlength;+i)if(S.chi!=T.chi)retuin S.chi-T.chi;return S.length-T.length;mt Iiidex(HStiing S.HStnng T,iiit pos)int 卫;HStriiig Sub,*sub=&Sub;Sub.ch=NULL;if(pos>0)n=StrLengtli(S);m=StrL

7、ength(T);i=pos;while(i<=n-m+1)SubStrmg(sub,S,i4ii);if(Sti-C ompare(Sub ,T)!=0) +i;else remin i;retuin 0;Status StiInseit(HStriiig pos.HStriiig T)int i;if(pos< 11|pos>s->length+1) return ERROR:if(T.length)s->ch=(char *)realloc(s->chXs->length-rT.length) *sizeof(chai); if(?s->c

8、h) exit(OVERFLOW);fbr(i=s->length-l ;i>=pos-l ;i)s->chi+T.length=s->chi;for (i=0; i<=T. length-1 ;i+)s->chpos-l +i=T.chi;s->length+=T.length;return OK;Status StiDelete(HStnng *s,int pos,int len)int i;if(pos< 11 |pos>s->length) return ERROR: fbr(i=pos+len 1 ;i<s->l

9、ength:i+)s->chi-len=s->chi;s->length-=len;return OK;*/H第三部分/主函数=void main()int i;HStrmg S,Sl,S2,S3J;U,V,W,*s;int temp;int retumvalue;intposjen;pnntf(Ml:初始化串 SI,字符为:woslusupermen»ir,); pnntf(M2:初始化串 S2,字符为:woslusupei-father!nM); pnntfC3:连接串SI和S2,得到的结果为Tn”); pnntf(-4:截取串SI中的部分字符n”);pnntf

10、(H5:退出jT);while(l)pnntf(”请输入要操作的编号:n”);scanf( ”d 霍&emp);如果是1if(temp = 1)现在我的字符串是固定的写入程序中的 这样就把程序写死了,不灵活, 你们能想办法解决吗?StrAssign (&S 1 /'wosliisupermen! ”); pimtfC'Sl初始化成功,串S1的信息为:5”); prmt_T(Sl);如果是2if(temp = 2)StrAssign(&S2,”woshisuperfath 亡】!”); pnntf(”S2初始化成功,串S2的信息为:5”); pnnt_T(S2);如果是3 -串连接if(temp = 3)Concat(&T,S1$2);pimtfC'T是有S1和S2连接而成,连接后,串T的信息为:n”); pnnt_T(T);如果是4-求子串if(temp = 4)prmtfC现在串S1的信息是:prmcT(Sl);pnntf(“求S1的字串,请输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论