串的基本操作_第1页
串的基本操作_第2页
串的基本操作_第3页
串的基本操作_第4页
串的基本操作_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

字符串基本操作一、实验目的、意义(1)理解列堆分配记忆结构;(2)用它们表现时插入,生成列,理解连接列和求子列的算法。(3)根据具体问题的需要,可以设计相关算法。二、实验内容和要求说明1 :学生在线实验时,自己设计相关函数,同时设计多组输入数据,编写主程序,分别调用这些函数,调试程序,修改需要分析对应输出的输入数据,期待输出,验证输出结果,算法具体要求:定义字符串堆分配存储并完成字符串的基本操作:插入、字符串生成、字符串组合、子字符串求解等。3、与实验有关的知识点c语言算法、循环算法、字符串堆分配存储结构、插入、字符串生成、字符串和子字符串组合的算法。四、实验结果与分析(输入的数据和与其对应的执行结果,在执行结果中需要提示信息,执行结果以屏幕截图方式给出。 中所述情节,对概念设计中的量体体积进行分析五、总结和体会(调试程序的体会和体会,在实验课上调试没有完成的情况下,必须认真发现错误,分析原因等。 中所述情节,对概念设计中的量体体积进行分析调试程序时发生了许多错误。 例如,字符串堆分配存储结构、字符串组合等。 也有语法上的错误。 由于所学知识点的概念模糊不清,因此在考试课上未能完成这次搭乘工作。 之后,查阅教材,浏览网页,结束了实验。 这次实验中错误最重要的原因是没有理解教科书的知识点和编码时的疏忽。 今后要去练习和实践,改善自己的不足。六、程序清单(包括评论)#include#include#includetypedef char Status;int strlen(char *p )装模作样int i=0;while(*p )i;return i;以下称为typedef struct装模作样char *ch; /如果不是空列,则按列长度分配bank,否则ch为NULLint length; /字符串长度HString;/初始化字符串t (生成空字符串)void InitString(HString *T )装模作样(*T).length=0;(*T).ch=NULL;以下称为/生成值等于字符串常量chars的字符串tStatus StrAssign(HString *T,char *chars )装模作样int i,j;if(*T).ch )free(*T).ch) /t释放原始空间求出i=strlen(chars) chars的长度Iif! I )装模作样/chars的长度为0(*T).ch=NULL;(*T).length=0;以下称为else装模作样/chars的长度不是0(* t ).ch=(char * ) malloc (I * sizeof (char ) ) /指定字串空间if! (*T).ch) /字符串空间分配失败exit(0)for(j=0; j i; j ) /复制字符串(*T).chj=charsj;(*T).length=i;以下称为return 1;以下称为/从字符串s复制到字符串tint StrCopy(HString *T,HString S )装模作样int i;if(*T).ch )free(*T).ch) /t释放原始空间(* t ).ch=(char * ) malloc (s.length * sizeof (char ) ) /指定字串空间if! (*T).ch) /字符串空间分配失败exit(0)for(i=0; 对于iT,返回值为0;对于S=T,返回值=0; ss.length| len0|lens.length-pos1)return 0;if(*Sub).ch )free(*Sub).ch) /释放旧空间if! len) /间隙串装模作样(*Sub).ch=NULL;(*Sub).length=0;以下称为else /完全部分列(* sub ).ch=(char * ) malloc (len * sizeof (char ) )if! (*Sub).ch )exit(0)for(i=0; i=len-1; I )(*Sub).chi=S.chpos-1 i;(*Sub).length=len;以下称为return 1;以下称为/算法4.1/T不是空列。 如果在主列s中第pos个字符之后存在与t相等的部分列/返回第一个这样的子串在s中的位置。 否则,返回0索引(HString T,HString T,int pos )装模作样int n、m、I;HString sub;initstring (辅助)if(pos0)装模作样n=StrLength(S )m=StrLength(T )i=pos;while(i=n-m 1)/从第二个位置求出长度与t相等的子串,循环直到找到为止装模作样SubString(sub,s,I,m) /I从第I个位置求子串if(StrCompare(sub,t )!=0)/将求出的部分列与t进行比较,否则为II;elsereturn i;以下称为以下称为return 0;以下称为/算法4.4/在字符串s的pos字符前面插入字符串Tsint StrInsert(HString *S,int pos,HString T )装模作样int i;if(pos1|pos(*S).length 1) /pos不正确return 0;如果if(T.length) /T不为空,请重新指定空格并插入t装模作样(*S).ch=(char*)realloc(*S).ch(* s ).lengtht.length ) * sizeof (char );if! (*S).ch )exit(0)for(i=(*S).length-1; i=pos-1; - -为插入/留出空间(*S).chi T.length=(*S).chi;for(i=0; I;printf (字符串s%c字符串tn ,c );Concat(r,t,s )printf (字符串t连接字符串s生成字符串r为: ) .StrPrint(r )StrAssign(s, oo );printf (字符串s为: );StrPrint(s )StrAssign(t, o );printf (字符串t为: );StrPrint(t )替换(r、t、s )printf (如果字符串r和字符串t使用字符串s替换相同的部分字符串,则字符串r为:n )StrPrint(r )ClearString(s )printf (字符串s为空后,字符串长度是否为%d? %d(1:天0:否)n ,StrLength(s ),StrEmpty(s );SubString(s,r,6,4 )printf (字符串s是字符串r的第6到4个字符,长度为%d字符串s是: ,s.length;StrPrint(s )StrCopy(t,r )printf (复制字符串t是字符串r,字符串t是: )StrPrint(t )StrInsert(t,6,s )printf (如果

温馨提示

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

评论

0/150

提交评论