好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

串的基本操作(共8页).doc

8页
  • 卖家[上传人]:des****85
  • 文档编号:227051388
  • 上传时间:2021-12-19
  • 文档格式:DOC
  • 文档大小:62KB
  • / 8 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 精选优质文档-----倾情为你奉上 串的基本操作 一、实验目的、意义(1)理解串的堆分配存储结构2)理解用它们表示时插入,生成串,联接串与求子串的算法3)根据具体问题的需要,能够设计出相关算法二、实验内容及要求说明1:学生在上机实验时,需要自己设计出所涉及到的函数,同时设计多组输入数据并编写主程序分别调用这些函数,调试程序并对相应的输出作出分析;修改输入数据,预期输出并验证输出的结果,加深对有关算法的理解具体要求:定义串的堆分配存储,完成串的基本操作:插入,生成串,联接串,求子串等3、 实验所涉及的知识点C语言算法、循环算法、串的堆分配存储结构、插入,生成串,联接串与求子串的算法四、实验结果及分析(所输入的数据及相应的运行结果,运行结果要有提示信息,运行结果采用截图方式给出 五、总结与体会(调试程序的心得与体会,若实验课上未完成调试,要认真找出错误并分析原因等调试程序时,出现了许多错误如:串的堆分配存储结构、串的联接等另外还有一些语法上的错误由于对所学知识点概念模糊,试验课上未能完成此次上机作业后来经过查阅教材,浏览网页等方式,才完成试验这次试验出现错误最重要的原因就是对课本知识点理解不深刻以及编写代码时的粗心。

      以后要都去练习、实践,以完善自己的不足六、程序清单(包含注释)#include #include #include typedef char Status;int strlen(char *p){ int i=0; while(*p++)i++; return i;}typedef struct{ char *ch; // 若是非空串,则按串长分配存储区,否则ch为NULL int length; // 串长度 }HString;// 初始化(产生空串)字符串Tvoid InitString(HString *T){ (*T).length=0; (*T).ch=NULL;}// 生成一个其值等于串常量chars的串T Status StrAssign(HString *T, char *chars){ int i,j; if((*T).ch) free((*T).ch); // 释放T原有空间 i = strlen(chars); // 求chars的长度i if(!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).ch[j] = chars[j]; (*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;若S

      int SubString(HString *Sub, HString S,int pos,int len){ int i; if(pos<1||pos>S.length||len<0||len>S.length-pos+1) 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).ch[i]=S.ch[pos-1+i]; (*Sub).length=len; } return 1;}// 算法4.1 // T为非空串若主串S中第pos个字符之后存在与T相等的子串, // 则返回第一个这样的子串在S中的位置,否则返回0 int Index(HString S,HString T,int pos){ int n,m,i; HString sub; InitString(&sub); if(pos>0) { n=StrLength(S); m=StrLength(T); i=pos; while(i<=n-m+1) //从第i个位置开始求与T等长的子串,循环直到找到 { SubString(&sub,S,i,m); //从第i个位置开始求得子串 if(StrCompare(sub,T)!=0)//将求得的子串与T对比,若不等则i++ ++i; else return i; } } return 0;}// 算法4.4// 在串S的第pos个字符之前插入串Tsint StrInsert(HString *S,int pos,HString T) { int i; if(pos<1||pos>(*S).length+1) // pos不合法 return 0; if(T.length) // T非空,则重新分配空间,插入T { (*S).ch = (char*)realloc((*S).ch, ((*S).length+T.length)*sizeof(char)); if(!(*S).ch) exit(0); for(i=(*S).length-1;i>=pos-1;--i) // 为插入T而腾出位置 (*S).ch[i+T.length]=(*S).ch[i]; for(i=0;i

      点击阅读更多内容
      相关文档
      高等学校学生手册.doc 2025年区教育系统招聘编外教师储备人才事业单位考试押题.docx 2025年秋季青岛版三年级数学上册认识轴对称现象教学课件.pptx 2025年秋季青岛版三年级数学上册用乘法估算解决问题教学课件.pptx 2025年秋季青岛版三年级数学上册两、三位数乘一位数的笔算(不进位)教学课件.pptx 2025年秋季青岛版三年级数学上册1200张纸有多厚教学设计范文.docx 2025年秋季青岛版三年级数学上册多位数除以一位数教学课件.pptx 2025年秋季青岛版三年级数学上册认识平移、旋转现象教学课件.pptx 2025年秋季青岛版三年级数学上册多位数乘一位数教学设计范本.docx 2025年秋季青岛版三年级数学上册认识平移与旋转教学设计范文.docx 2025年秋季青岛版三年级数学上册乘数中间有0或末尾有0的乘法教学课件.pptx 2025年秋季青岛版三年级数学上册两位数乘一位数的笔算(进位)教学课件.pptx 2025年秋季青岛版三年级数学上册《两、三位数乘一位数的笔算(不进位)》教学设计与意图.docx 2025年秋季青岛版三年级数学上册我学会了吗教学课件.pptx 2025年连云港市妇幼保健院招聘专业技术人员考试笔试试题.docx 2025年深圳市大鹏新区发展和财政局招聘考试笔试试卷.docx 2025年绵阳市梓潼县财政投资评审中心招聘考试试题.docx 2025年来宾市妇幼保健院招聘考试笔试试题.docx 2025年无极县教育系统招聘教师考试笔试试卷.docx 2025年灵山县第三中学调配教师考试笔试试题.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.